|
The disassembly in parent comment is made with CPython 3.6.9, but nothing substantial changes on CPython 3.8.x/3.9.x or PyPy. Maybe it is related to grammar, and not to compiler... AST dump in CPython 3.6.9 (manually formatted): In [1]: import ast
In [2]: print(ast.dump(ast.parse("""\
...: def a():
...: return (1 in [1,2,3] is True)""")))
Module(
body=[
FunctionDef(
name='a',
args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]),
body=[
Return(
value=Compare(
left=Num(n=1),
ops=[In(), Is()],
comparators=[
List(elts=[Num(n=1), Num(n=2), Num(n=3)], ctx=Load()),
NameConstant(value=True)
]
)
)
],
decorator_list=[],
returns=None
)
]
)
In [3]: print(ast.dump(ast.parse("""\
...: def b():
...: return ((1 in [1,2,3]) is True)""")))
Module(
body=[
FunctionDef(
name='b',
args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]),
body=[
Return(
value=Compare(
left=Compare(
left=Num(n=1),
ops=[In()],
comparators=[List(elts=[Num(n=1), Num(n=2), Num(n=3)], ctx=Load())]
),
ops=[Is()],
comparators=[NameConstant(value=True)]
)
)
],
decorator_list=[],
returns=None
)
]
)
|