Created
August 30, 2019 15:31
-
-
Save youknowone/def929a322d21535c9cf99117072f61a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# generator targets shouldn't affect scopes out of comprehensions | |
[a for a in range(5)] | |
assert 'a' not in locals() | |
assert 'a' not in globals() | |
[b for a, b in [(1, 1), (2, 2)]] | |
assert 'b' not in locals() | |
assert 'b' not in globals() | |
{b: c for b, c in {1: 2}.items()} | |
assert 'b' not in locals() | |
assert 'c' not in locals() | |
assert 'b' not in globals() | |
assert 'c' not in globals() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Crawling file: cp.py | |
<_ast.Module object at 0x1091d15f8> | |
NODE Module | |
- body | |
NODE Expr row=2 | |
- value | |
NODE ListComp row=2 | |
- elt | |
NODE Name row=2 | |
- id | |
OBJ a | |
- ctx | |
NODE Load | |
- generators | |
NODE comprehension | |
- target | |
NODE Name row=2 | |
- id | |
OBJ a | |
- ctx | |
NODE Store | |
- iter | |
NODE Call row=2 | |
- func | |
NODE Name row=2 | |
- id | |
OBJ range | |
- ctx | |
NODE Load | |
- args | |
NODE Num row=2 | |
- n | |
OBJ 5 | |
- keywords | |
- ifs | |
- is_async | |
OBJ 0 | |
NODE Assert row=3 | |
- test | |
NODE Compare row=3 | |
- left | |
NODE Str row=3 | |
- s | |
OBJ a | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=3 | |
- func | |
NODE Name row=3 | |
- id | |
OBJ locals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=4 | |
- test | |
NODE Compare row=4 | |
- left | |
NODE Str row=4 | |
- s | |
OBJ a | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=4 | |
- func | |
NODE Name row=4 | |
- id | |
OBJ globals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Expr row=6 | |
- value | |
NODE ListComp row=6 | |
- elt | |
NODE Name row=6 | |
- id | |
OBJ b | |
- ctx | |
NODE Load | |
- generators | |
NODE comprehension | |
- target | |
NODE Tuple row=6 | |
- elts | |
NODE Name row=6 | |
- id | |
OBJ a | |
- ctx | |
NODE Store | |
NODE Name row=6 | |
- id | |
OBJ b | |
- ctx | |
NODE Store | |
- ctx | |
NODE Store | |
- iter | |
NODE List row=6 | |
- elts | |
NODE Tuple row=6 | |
- elts | |
NODE Num row=6 | |
- n | |
OBJ 1 | |
NODE Num row=6 | |
- n | |
OBJ 1 | |
- ctx | |
NODE Load | |
NODE Tuple row=6 | |
- elts | |
NODE Num row=6 | |
- n | |
OBJ 2 | |
NODE Num row=6 | |
- n | |
OBJ 2 | |
- ctx | |
NODE Load | |
- ctx | |
NODE Load | |
- ifs | |
- is_async | |
OBJ 0 | |
NODE Assert row=7 | |
- test | |
NODE Compare row=7 | |
- left | |
NODE Str row=7 | |
- s | |
OBJ b | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=7 | |
- func | |
NODE Name row=7 | |
- id | |
OBJ locals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=8 | |
- test | |
NODE Compare row=8 | |
- left | |
NODE Str row=8 | |
- s | |
OBJ b | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=8 | |
- func | |
NODE Name row=8 | |
- id | |
OBJ globals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Expr row=10 | |
- value | |
NODE DictComp row=10 | |
- key | |
NODE Name row=10 | |
- id | |
OBJ b | |
- ctx | |
NODE Load | |
- value | |
NODE Name row=10 | |
- id | |
OBJ c | |
- ctx | |
NODE Load | |
- generators | |
NODE comprehension | |
- target | |
NODE Tuple row=10 | |
- elts | |
NODE Name row=10 | |
- id | |
OBJ b | |
- ctx | |
NODE Store | |
NODE Name row=10 | |
- id | |
OBJ c | |
- ctx | |
NODE Store | |
- ctx | |
NODE Store | |
- iter | |
NODE Call row=10 | |
- func | |
NODE Attribute row=10 | |
- value | |
NODE Dict row=10 | |
- keys | |
NODE Num row=10 | |
- n | |
OBJ 1 | |
- values | |
NODE Num row=10 | |
- n | |
OBJ 2 | |
- attr | |
OBJ items | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- ifs | |
- is_async | |
OBJ 0 | |
NODE Assert row=11 | |
- test | |
NODE Compare row=11 | |
- left | |
NODE Str row=11 | |
- s | |
OBJ b | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=11 | |
- func | |
NODE Name row=11 | |
- id | |
OBJ locals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=12 | |
- test | |
NODE Compare row=12 | |
- left | |
NODE Str row=12 | |
- s | |
OBJ c | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=12 | |
- func | |
NODE Name row=12 | |
- id | |
OBJ locals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=13 | |
- test | |
NODE Compare row=13 | |
- left | |
NODE Str row=13 | |
- s | |
OBJ b | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=13 | |
- func | |
NODE Name row=13 | |
- id | |
OBJ globals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=14 | |
- test | |
NODE Compare row=14 | |
- left | |
NODE Str row=14 | |
- s | |
OBJ c | |
- ops | |
NODE NotIn | |
- comparators | |
NODE Call row=14 | |
- func | |
NODE Name row=14 | |
- id | |
OBJ globals | |
- ctx | |
NODE Load | |
- args | |
- keywords | |
- msg | |
OBJ None | |
table: top | |
name: top | |
type: module | |
line: 0 | |
identifiers: dict_keys(['range', 'locals', 'globals']) | |
Syms: | |
sym: range flags: is_referenced is_global | |
sym: locals flags: is_referenced is_global | |
sym: globals flags: is_referenced is_global | |
Child tables: | |
table: listcomp | |
name: listcomp | |
type: function | |
line: 2 | |
identifiers: dict_keys(['.0', 'a']) | |
Syms: | |
sym: .0 flags: is_local is_parameter | |
sym: a flags: is_referenced is_assigned is_local | |
table: listcomp | |
name: listcomp | |
type: function | |
line: 6 | |
identifiers: dict_keys(['.0', 'a', 'b']) | |
Syms: | |
sym: .0 flags: is_local is_parameter | |
sym: a flags: is_assigned is_local | |
sym: b flags: is_referenced is_assigned is_local | |
table: dictcomp | |
name: dictcomp | |
type: function | |
line: 10 | |
identifiers: dict_keys(['.0', 'b', 'c']) | |
Syms: | |
sym: .0 flags: is_local is_parameter | |
sym: b flags: is_referenced is_assigned is_local | |
sym: c flags: is_referenced is_assigned is_local | |
======== dis.dis ======== | |
2 0 LOAD_CONST 0 (<code object <listcomp> at 0x1091b2c90, file "cp.py", line 2>) | |
2 LOAD_CONST 1 ('<listcomp>') | |
4 MAKE_FUNCTION 0 | |
6 LOAD_NAME 0 (range) | |
8 LOAD_CONST 2 (5) | |
10 CALL_FUNCTION 1 | |
12 GET_ITER | |
14 CALL_FUNCTION 1 | |
16 POP_TOP | |
3 18 LOAD_CONST 3 ('a') | |
20 LOAD_NAME 1 (locals) | |
22 CALL_FUNCTION 0 | |
24 COMPARE_OP 7 (not in) | |
26 POP_JUMP_IF_TRUE 32 | |
28 LOAD_GLOBAL 2 (AssertionError) | |
30 RAISE_VARARGS 1 | |
4 >> 32 LOAD_CONST 3 ('a') | |
34 LOAD_NAME 3 (globals) | |
36 CALL_FUNCTION 0 | |
38 COMPARE_OP 7 (not in) | |
40 POP_JUMP_IF_TRUE 46 | |
42 LOAD_GLOBAL 2 (AssertionError) | |
44 RAISE_VARARGS 1 | |
6 >> 46 LOAD_CONST 4 (<code object <listcomp> at 0x1091bae40, file "cp.py", line 6>) | |
48 LOAD_CONST 1 ('<listcomp>') | |
50 MAKE_FUNCTION 0 | |
52 LOAD_CONST 5 (((1, 1), (2, 2))) | |
54 GET_ITER | |
56 CALL_FUNCTION 1 | |
58 POP_TOP | |
7 60 LOAD_CONST 6 ('b') | |
62 LOAD_NAME 1 (locals) | |
64 CALL_FUNCTION 0 | |
66 COMPARE_OP 7 (not in) | |
68 POP_JUMP_IF_TRUE 74 | |
70 LOAD_GLOBAL 2 (AssertionError) | |
72 RAISE_VARARGS 1 | |
8 >> 74 LOAD_CONST 6 ('b') | |
76 LOAD_NAME 3 (globals) | |
78 CALL_FUNCTION 0 | |
80 COMPARE_OP 7 (not in) | |
82 POP_JUMP_IF_TRUE 88 | |
84 LOAD_GLOBAL 2 (AssertionError) | |
86 RAISE_VARARGS 1 | |
10 >> 88 LOAD_CONST 7 (<code object <dictcomp> at 0x1091bad20, file "cp.py", line 10>) | |
90 LOAD_CONST 8 ('<dictcomp>') | |
92 MAKE_FUNCTION 0 | |
94 LOAD_CONST 9 (1) | |
96 LOAD_CONST 10 (2) | |
98 BUILD_MAP 1 | |
100 LOAD_METHOD 4 (items) | |
102 CALL_METHOD 0 | |
104 GET_ITER | |
106 CALL_FUNCTION 1 | |
108 POP_TOP | |
11 110 LOAD_CONST 6 ('b') | |
112 LOAD_NAME 1 (locals) | |
114 CALL_FUNCTION 0 | |
116 COMPARE_OP 7 (not in) | |
118 POP_JUMP_IF_TRUE 124 | |
120 LOAD_GLOBAL 2 (AssertionError) | |
122 RAISE_VARARGS 1 | |
12 >> 124 LOAD_CONST 11 ('c') | |
126 LOAD_NAME 1 (locals) | |
128 CALL_FUNCTION 0 | |
130 COMPARE_OP 7 (not in) | |
132 POP_JUMP_IF_TRUE 138 | |
134 LOAD_GLOBAL 2 (AssertionError) | |
136 RAISE_VARARGS 1 | |
13 >> 138 LOAD_CONST 6 ('b') | |
140 LOAD_NAME 3 (globals) | |
142 CALL_FUNCTION 0 | |
144 COMPARE_OP 7 (not in) | |
146 POP_JUMP_IF_TRUE 152 | |
148 LOAD_GLOBAL 2 (AssertionError) | |
150 RAISE_VARARGS 1 | |
14 >> 152 LOAD_CONST 11 ('c') | |
154 LOAD_NAME 3 (globals) | |
156 CALL_FUNCTION 0 | |
158 COMPARE_OP 7 (not in) | |
160 POP_JUMP_IF_TRUE 166 | |
162 LOAD_GLOBAL 2 (AssertionError) | |
164 RAISE_VARARGS 1 | |
>> 166 LOAD_CONST 12 (None) | |
168 RETURN_VALUE | |
Disassembly of <code object <listcomp> at 0x1091b2c90, file "cp.py", line 2>: | |
2 0 BUILD_LIST 0 | |
2 LOAD_FAST 0 (.0) | |
>> 4 FOR_ITER 8 (to 14) | |
6 STORE_FAST 1 (a) | |
8 LOAD_FAST 1 (a) | |
10 LIST_APPEND 2 | |
12 JUMP_ABSOLUTE 4 | |
>> 14 RETURN_VALUE | |
Disassembly of <code object <listcomp> at 0x1091bae40, file "cp.py", line 6>: | |
6 0 BUILD_LIST 0 | |
2 LOAD_FAST 0 (.0) | |
>> 4 FOR_ITER 12 (to 18) | |
6 UNPACK_SEQUENCE 2 | |
8 STORE_FAST 1 (a) | |
10 STORE_FAST 2 (b) | |
12 LOAD_FAST 2 (b) | |
14 LIST_APPEND 2 | |
16 JUMP_ABSOLUTE 4 | |
>> 18 RETURN_VALUE | |
Disassembly of <code object <dictcomp> at 0x1091bad20, file "cp.py", line 10>: | |
10 0 BUILD_MAP 0 | |
2 LOAD_FAST 0 (.0) | |
>> 4 FOR_ITER 14 (to 20) | |
6 UNPACK_SEQUENCE 2 | |
8 STORE_FAST 1 (b) | |
10 STORE_FAST 2 (c) | |
12 LOAD_FAST 2 (c) | |
14 LOAD_FAST 1 (b) | |
16 MAP_ADD 2 | |
18 JUMP_ABSOLUTE 4 | |
>> 20 RETURN_VALUE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- cpy.out 2019-08-31 00:27:28.000000000 +0900 | |
+++ rpy.out 2019-08-31 00:28:14.000000000 +0900 | |
@@ -1,16 +1,10 @@ | |
Crawling file: cp.py | |
-<_ast.Module object at 0x1091d15f8> | |
+<Module object at 0x7fb272245eb0> | |
NODE Module | |
- body | |
NODE Expr row=2 | |
- value | |
NODE ListComp row=2 | |
- - elt | |
- NODE Name row=2 | |
- - id | |
- OBJ a | |
- - ctx | |
- NODE Load | |
- generators | |
NODE comprehension | |
- target | |
@@ -18,7 +12,7 @@ | |
- id | |
OBJ a | |
- ctx | |
- NODE Store | |
+ OBJ None | |
- iter | |
NODE Call row=2 | |
- func | |
@@ -26,7 +20,7 @@ | |
- id | |
OBJ range | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
NODE Num row=2 | |
- n | |
@@ -34,7 +28,7 @@ | |
- keywords | |
- ifs | |
- is_async | |
- OBJ 0 | |
+ OBJ False | |
NODE Assert row=3 | |
- test | |
NODE Compare row=3 | |
@@ -43,7 +37,7 @@ | |
- s | |
OBJ a | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=3 | |
- func | |
@@ -51,7 +45,7 @@ | |
- id | |
OBJ locals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -64,7 +58,7 @@ | |
- s | |
OBJ a | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=4 | |
- func | |
@@ -72,7 +66,7 @@ | |
- id | |
OBJ globals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -80,12 +74,6 @@ | |
NODE Expr row=6 | |
- value | |
NODE ListComp row=6 | |
- - elt | |
- NODE Name row=6 | |
- - id | |
- OBJ b | |
- - ctx | |
- NODE Load | |
- generators | |
NODE comprehension | |
- target | |
@@ -95,14 +83,12 @@ | |
- id | |
OBJ a | |
- ctx | |
- NODE Store | |
+ OBJ None | |
NODE Name row=6 | |
- id | |
OBJ b | |
- ctx | |
- NODE Store | |
- - ctx | |
- NODE Store | |
+ OBJ None | |
- iter | |
NODE List row=6 | |
- elts | |
@@ -114,8 +100,6 @@ | |
NODE Num row=6 | |
- n | |
OBJ 1 | |
- - ctx | |
- NODE Load | |
NODE Tuple row=6 | |
- elts | |
NODE Num row=6 | |
@@ -124,13 +108,9 @@ | |
NODE Num row=6 | |
- n | |
OBJ 2 | |
- - ctx | |
- NODE Load | |
- - ctx | |
- NODE Load | |
- ifs | |
- is_async | |
- OBJ 0 | |
+ OBJ False | |
NODE Assert row=7 | |
- test | |
NODE Compare row=7 | |
@@ -139,7 +119,7 @@ | |
- s | |
OBJ b | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=7 | |
- func | |
@@ -147,7 +127,7 @@ | |
- id | |
OBJ locals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -160,7 +140,7 @@ | |
- s | |
OBJ b | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=8 | |
- func | |
@@ -168,7 +148,7 @@ | |
- id | |
OBJ globals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -176,18 +156,6 @@ | |
NODE Expr row=10 | |
- value | |
NODE DictComp row=10 | |
- - key | |
- NODE Name row=10 | |
- - id | |
- OBJ b | |
- - ctx | |
- NODE Load | |
- - value | |
- NODE Name row=10 | |
- - id | |
- OBJ c | |
- - ctx | |
- NODE Load | |
- generators | |
NODE comprehension | |
- target | |
@@ -197,14 +165,12 @@ | |
- id | |
OBJ b | |
- ctx | |
- NODE Store | |
+ OBJ None | |
NODE Name row=10 | |
- id | |
OBJ c | |
- ctx | |
- NODE Store | |
- - ctx | |
- NODE Store | |
+ OBJ None | |
- iter | |
NODE Call row=10 | |
- func | |
@@ -222,12 +188,12 @@ | |
- attr | |
OBJ items | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- ifs | |
- is_async | |
- OBJ 0 | |
+ OBJ False | |
NODE Assert row=11 | |
- test | |
NODE Compare row=11 | |
@@ -236,7 +202,7 @@ | |
- s | |
OBJ b | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=11 | |
- func | |
@@ -244,7 +210,7 @@ | |
- id | |
OBJ locals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -257,7 +223,7 @@ | |
- s | |
OBJ c | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=12 | |
- func | |
@@ -265,7 +231,7 @@ | |
- id | |
OBJ locals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -278,7 +244,7 @@ | |
- s | |
OBJ b | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=13 | |
- func | |
@@ -286,7 +252,7 @@ | |
- id | |
OBJ globals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -299,7 +265,7 @@ | |
- s | |
OBJ c | |
- ops | |
- NODE NotIn | |
+ OBJ NotIn | |
- comparators | |
NODE Call row=14 | |
- func | |
@@ -307,7 +273,7 @@ | |
- id | |
OBJ globals | |
- ctx | |
- NODE Load | |
+ OBJ None | |
- args | |
- keywords | |
- msg | |
@@ -316,168 +282,137 @@ | |
name: top | |
type: module | |
line: 0 | |
- identifiers: dict_keys(['range', 'locals', 'globals']) | |
+ identifiers: ['a', 'range', 'locals', 'globals', 'b', 'c'] | |
Syms: | |
+ sym: a flags: is_referenced is_assigned is_local | |
sym: range flags: is_referenced is_global | |
sym: locals flags: is_referenced is_global | |
sym: globals flags: is_referenced is_global | |
- Child tables: | |
- table: listcomp | |
- name: listcomp | |
- type: function | |
- line: 2 | |
- identifiers: dict_keys(['.0', 'a']) | |
- Syms: | |
- sym: .0 flags: is_local is_parameter | |
- sym: a flags: is_referenced is_assigned is_local | |
- table: listcomp | |
- name: listcomp | |
- type: function | |
- line: 6 | |
- identifiers: dict_keys(['.0', 'a', 'b']) | |
- Syms: | |
- sym: .0 flags: is_local is_parameter | |
- sym: a flags: is_assigned is_local | |
- sym: b flags: is_referenced is_assigned is_local | |
- table: dictcomp | |
- name: dictcomp | |
- type: function | |
- line: 10 | |
- identifiers: dict_keys(['.0', 'b', 'c']) | |
- Syms: | |
- sym: .0 flags: is_local is_parameter | |
- sym: b flags: is_referenced is_assigned is_local | |
- sym: c flags: is_referenced is_assigned is_local | |
+ sym: b flags: is_referenced is_assigned is_local | |
+ sym: c flags: is_referenced is_assigned is_local | |
======== dis.dis ======== | |
- 2 0 LOAD_CONST 0 (<code object <listcomp> at 0x1091b2c90, file "cp.py", line 2>) | |
- 2 LOAD_CONST 1 ('<listcomp>') | |
- 4 MAKE_FUNCTION 0 | |
- 6 LOAD_NAME 0 (range) | |
- 8 LOAD_CONST 2 (5) | |
- 10 CALL_FUNCTION 1 | |
- 12 GET_ITER | |
- 14 CALL_FUNCTION 1 | |
- 16 POP_TOP | |
- | |
- 3 18 LOAD_CONST 3 ('a') | |
- 20 LOAD_NAME 1 (locals) | |
- 22 CALL_FUNCTION 0 | |
- 24 COMPARE_OP 7 (not in) | |
- 26 POP_JUMP_IF_TRUE 32 | |
- 28 LOAD_GLOBAL 2 (AssertionError) | |
- 30 RAISE_VARARGS 1 | |
- | |
- 4 >> 32 LOAD_CONST 3 ('a') | |
- 34 LOAD_NAME 3 (globals) | |
- 36 CALL_FUNCTION 0 | |
- 38 COMPARE_OP 7 (not in) | |
- 40 POP_JUMP_IF_TRUE 46 | |
- 42 LOAD_GLOBAL 2 (AssertionError) | |
- 44 RAISE_VARARGS 1 | |
- | |
- 6 >> 46 LOAD_CONST 4 (<code object <listcomp> at 0x1091bae40, file "cp.py", line 6>) | |
- 48 LOAD_CONST 1 ('<listcomp>') | |
- 50 MAKE_FUNCTION 0 | |
- 52 LOAD_CONST 5 (((1, 1), (2, 2))) | |
- 54 GET_ITER | |
- 56 CALL_FUNCTION 1 | |
- 58 POP_TOP | |
- | |
- 7 60 LOAD_CONST 6 ('b') | |
- 62 LOAD_NAME 1 (locals) | |
- 64 CALL_FUNCTION 0 | |
- 66 COMPARE_OP 7 (not in) | |
- 68 POP_JUMP_IF_TRUE 74 | |
- 70 LOAD_GLOBAL 2 (AssertionError) | |
- 72 RAISE_VARARGS 1 | |
- | |
- 8 >> 74 LOAD_CONST 6 ('b') | |
- 76 LOAD_NAME 3 (globals) | |
- 78 CALL_FUNCTION 0 | |
- 80 COMPARE_OP 7 (not in) | |
- 82 POP_JUMP_IF_TRUE 88 | |
- 84 LOAD_GLOBAL 2 (AssertionError) | |
- 86 RAISE_VARARGS 1 | |
- | |
- 10 >> 88 LOAD_CONST 7 (<code object <dictcomp> at 0x1091bad20, file "cp.py", line 10>) | |
- 90 LOAD_CONST 8 ('<dictcomp>') | |
- 92 MAKE_FUNCTION 0 | |
- 94 LOAD_CONST 9 (1) | |
- 96 LOAD_CONST 10 (2) | |
- 98 BUILD_MAP 1 | |
- 100 LOAD_METHOD 4 (items) | |
- 102 CALL_METHOD 0 | |
- 104 GET_ITER | |
- 106 CALL_FUNCTION 1 | |
- 108 POP_TOP | |
- | |
- 11 110 LOAD_CONST 6 ('b') | |
- 112 LOAD_NAME 1 (locals) | |
- 114 CALL_FUNCTION 0 | |
- 116 COMPARE_OP 7 (not in) | |
- 118 POP_JUMP_IF_TRUE 124 | |
- 120 LOAD_GLOBAL 2 (AssertionError) | |
- 122 RAISE_VARARGS 1 | |
- | |
- 12 >> 124 LOAD_CONST 11 ('c') | |
- 126 LOAD_NAME 1 (locals) | |
- 128 CALL_FUNCTION 0 | |
- 130 COMPARE_OP 7 (not in) | |
- 132 POP_JUMP_IF_TRUE 138 | |
- 134 LOAD_GLOBAL 2 (AssertionError) | |
- 136 RAISE_VARARGS 1 | |
- | |
- 13 >> 138 LOAD_CONST 6 ('b') | |
- 140 LOAD_NAME 3 (globals) | |
- 142 CALL_FUNCTION 0 | |
- 144 COMPARE_OP 7 (not in) | |
- 146 POP_JUMP_IF_TRUE 152 | |
- 148 LOAD_GLOBAL 2 (AssertionError) | |
- 150 RAISE_VARARGS 1 | |
- | |
- 14 >> 152 LOAD_CONST 11 ('c') | |
- 154 LOAD_NAME 3 (globals) | |
- 156 CALL_FUNCTION 0 | |
- 158 COMPARE_OP 7 (not in) | |
- 160 POP_JUMP_IF_TRUE 166 | |
- 162 LOAD_GLOBAL 2 (AssertionError) | |
- 164 RAISE_VARARGS 1 | |
- >> 166 LOAD_CONST 12 (None) | |
- 168 RETURN_VALUE | |
- | |
-Disassembly of <code object <listcomp> at 0x1091b2c90, file "cp.py", line 2>: | |
- 2 0 BUILD_LIST 0 | |
- 2 LOAD_FAST 0 (.0) | |
- >> 4 FOR_ITER 8 (to 14) | |
- 6 STORE_FAST 1 (a) | |
- 8 LOAD_FAST 1 (a) | |
- 10 LIST_APPEND 2 | |
- 12 JUMP_ABSOLUTE 4 | |
- >> 14 RETURN_VALUE | |
- | |
-Disassembly of <code object <listcomp> at 0x1091bae40, file "cp.py", line 6>: | |
- 6 0 BUILD_LIST 0 | |
- 2 LOAD_FAST 0 (.0) | |
- >> 4 FOR_ITER 12 (to 18) | |
- 6 UNPACK_SEQUENCE 2 | |
- 8 STORE_FAST 1 (a) | |
- 10 STORE_FAST 2 (b) | |
- 12 LOAD_FAST 2 (b) | |
- 14 LIST_APPEND 2 | |
- 16 JUMP_ABSOLUTE 4 | |
- >> 18 RETURN_VALUE | |
- | |
-Disassembly of <code object <dictcomp> at 0x1091bad20, file "cp.py", line 10>: | |
- 10 0 BUILD_MAP 0 | |
- 2 LOAD_FAST 0 (.0) | |
- >> 4 FOR_ITER 14 (to 20) | |
- 6 UNPACK_SEQUENCE 2 | |
- 8 STORE_FAST 1 (b) | |
- 10 STORE_FAST 2 (c) | |
- 12 LOAD_FAST 2 (c) | |
- 14 LOAD_FAST 1 (b) | |
- 16 MAP_ADD 2 | |
- 18 JUMP_ABSOLUTE 4 | |
- >> 20 RETURN_VALUE | |
+ 0 LoadConst (<code object <listcomp> at ??? file "cp.py", line 2>) | |
+ 1 LoadConst ("<listcomp>") | |
+ 2 MakeFunction ((empty)) | |
+ 3 LoadName (range, Global) | |
+ 4 LoadConst (5) | |
+ 5 CallFunction (Positional(1)) | |
+ 6 GetIter | |
+ 7 CallFunction (Positional(1)) | |
+ 8 Pop | |
+ 9 LoadConst ("a") | |
+ 10 LoadName (locals, Global) | |
+ 11 CallFunction (Positional(0)) | |
+ 12 CompareOperation (NotIn) | |
+ 13 Jump (16) | |
+ >> 14 Rotate (2) | |
+ 15 Pop | |
+ >> 16 JumpIfTrue (20) | |
+ 17 LoadName (AssertionError, Global) | |
+ 18 CallFunction (Positional(0)) | |
+ 19 Raise (1) | |
+ >> 20 LoadConst ("a") | |
+ 21 LoadName (globals, Global) | |
+ 22 CallFunction (Positional(0)) | |
+ 23 CompareOperation (NotIn) | |
+ 24 Jump (27) | |
+ >> 25 Rotate (2) | |
+ 26 Pop | |
+ >> 27 JumpIfTrue (31) | |
+ 28 LoadName (AssertionError, Global) | |
+ 29 CallFunction (Positional(0)) | |
+ 30 Raise (1) | |
+ >> 31 LoadConst (<code object <listcomp> at ??? file "cp.py", line 6>) | |
+ 32 LoadConst ("<listcomp>") | |
+ 33 MakeFunction ((empty)) | |
+ 34 LoadConst (1) | |
+ 35 LoadConst (1) | |
+ 36 BuildTuple (2, false) | |
+ 37 LoadConst (2) | |
+ 38 LoadConst (2) | |
+ 39 BuildTuple (2, false) | |
+ 40 BuildList (2, false) | |
+ 41 GetIter | |
+ 42 CallFunction (Positional(1)) | |
+ 43 Pop | |
+ 44 LoadConst ("b") | |
+ 45 LoadName (locals, Global) | |
+ 46 CallFunction (Positional(0)) | |
+ 47 CompareOperation (NotIn) | |
+ 48 Jump (51) | |
+ >> 49 Rotate (2) | |
+ 50 Pop | |
+ >> 51 JumpIfTrue (55) | |
+ 52 LoadName (AssertionError, Global) | |
+ 53 CallFunction (Positional(0)) | |
+ 54 Raise (1) | |
+ >> 55 LoadConst ("b") | |
+ 56 LoadName (globals, Global) | |
+ 57 CallFunction (Positional(0)) | |
+ 58 CompareOperation (NotIn) | |
+ 59 Jump (62) | |
+ >> 60 Rotate (2) | |
+ 61 Pop | |
+ >> 62 JumpIfTrue (66) | |
+ 63 LoadName (AssertionError, Global) | |
+ 64 CallFunction (Positional(0)) | |
+ 65 Raise (1) | |
+ >> 66 LoadConst (<code object <dictcomp> at ??? file "cp.py", line 10>) | |
+ 67 LoadConst ("<dictcomp>") | |
+ 68 MakeFunction ((empty)) | |
+ 69 LoadConst (1) | |
+ 70 LoadConst (2) | |
+ 71 BuildMap (1, false) | |
+ 72 LoadAttr (items) | |
+ 73 CallFunction (Positional(0)) | |
+ 74 GetIter | |
+ 75 CallFunction (Positional(1)) | |
+ 76 Pop | |
+ 77 LoadConst ("b") | |
+ 78 LoadName (locals, Global) | |
+ 79 CallFunction (Positional(0)) | |
+ 80 CompareOperation (NotIn) | |
+ 81 Jump (84) | |
+ >> 82 Rotate (2) | |
+ 83 Pop | |
+ >> 84 JumpIfTrue (88) | |
+ 85 LoadName (AssertionError, Global) | |
+ 86 CallFunction (Positional(0)) | |
+ 87 Raise (1) | |
+ >> 88 LoadConst ("c") | |
+ 89 LoadName (locals, Global) | |
+ 90 CallFunction (Positional(0)) | |
+ 91 CompareOperation (NotIn) | |
+ 92 Jump (95) | |
+ >> 93 Rotate (2) | |
+ 94 Pop | |
+ >> 95 JumpIfTrue (99) | |
+ 96 LoadName (AssertionError, Global) | |
+ 97 CallFunction (Positional(0)) | |
+ 98 Raise (1) | |
+ >> 99 LoadConst ("b") | |
+ 100 LoadName (globals, Global) | |
+ 101 CallFunction (Positional(0)) | |
+ 102 CompareOperation (NotIn) | |
+ 103 Jump (106) | |
+ >> 104 Rotate (2) | |
+ 105 Pop | |
+ >> 106 JumpIfTrue (110) | |
+ 107 LoadName (AssertionError, Global) | |
+ 108 CallFunction (Positional(0)) | |
+ 109 Raise (1) | |
+ >> 110 LoadConst ("c") | |
+ 111 LoadName (globals, Global) | |
+ 112 CallFunction (Positional(0)) | |
+ 113 CompareOperation (NotIn) | |
+ 114 Jump (117) | |
+ >> 115 Rotate (2) | |
+ 116 Pop | |
+ >> 117 JumpIfTrue (121) | |
+ 118 LoadName (AssertionError, Global) | |
+ 119 CallFunction (Positional(0)) | |
+ 120 Raise (1) | |
+ >> 121 LoadConst (None) | |
+ 122 ReturnValue |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Crawling file: cp.py | |
<Module object at 0x7fb272245eb0> | |
NODE Module | |
- body | |
NODE Expr row=2 | |
- value | |
NODE ListComp row=2 | |
- generators | |
NODE comprehension | |
- target | |
NODE Name row=2 | |
- id | |
OBJ a | |
- ctx | |
OBJ None | |
- iter | |
NODE Call row=2 | |
- func | |
NODE Name row=2 | |
- id | |
OBJ range | |
- ctx | |
OBJ None | |
- args | |
NODE Num row=2 | |
- n | |
OBJ 5 | |
- keywords | |
- ifs | |
- is_async | |
OBJ False | |
NODE Assert row=3 | |
- test | |
NODE Compare row=3 | |
- left | |
NODE Str row=3 | |
- s | |
OBJ a | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=3 | |
- func | |
NODE Name row=3 | |
- id | |
OBJ locals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=4 | |
- test | |
NODE Compare row=4 | |
- left | |
NODE Str row=4 | |
- s | |
OBJ a | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=4 | |
- func | |
NODE Name row=4 | |
- id | |
OBJ globals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Expr row=6 | |
- value | |
NODE ListComp row=6 | |
- generators | |
NODE comprehension | |
- target | |
NODE Tuple row=6 | |
- elts | |
NODE Name row=6 | |
- id | |
OBJ a | |
- ctx | |
OBJ None | |
NODE Name row=6 | |
- id | |
OBJ b | |
- ctx | |
OBJ None | |
- iter | |
NODE List row=6 | |
- elts | |
NODE Tuple row=6 | |
- elts | |
NODE Num row=6 | |
- n | |
OBJ 1 | |
NODE Num row=6 | |
- n | |
OBJ 1 | |
NODE Tuple row=6 | |
- elts | |
NODE Num row=6 | |
- n | |
OBJ 2 | |
NODE Num row=6 | |
- n | |
OBJ 2 | |
- ifs | |
- is_async | |
OBJ False | |
NODE Assert row=7 | |
- test | |
NODE Compare row=7 | |
- left | |
NODE Str row=7 | |
- s | |
OBJ b | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=7 | |
- func | |
NODE Name row=7 | |
- id | |
OBJ locals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=8 | |
- test | |
NODE Compare row=8 | |
- left | |
NODE Str row=8 | |
- s | |
OBJ b | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=8 | |
- func | |
NODE Name row=8 | |
- id | |
OBJ globals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Expr row=10 | |
- value | |
NODE DictComp row=10 | |
- generators | |
NODE comprehension | |
- target | |
NODE Tuple row=10 | |
- elts | |
NODE Name row=10 | |
- id | |
OBJ b | |
- ctx | |
OBJ None | |
NODE Name row=10 | |
- id | |
OBJ c | |
- ctx | |
OBJ None | |
- iter | |
NODE Call row=10 | |
- func | |
NODE Attribute row=10 | |
- value | |
NODE Dict row=10 | |
- keys | |
NODE Num row=10 | |
- n | |
OBJ 1 | |
- values | |
NODE Num row=10 | |
- n | |
OBJ 2 | |
- attr | |
OBJ items | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- ifs | |
- is_async | |
OBJ False | |
NODE Assert row=11 | |
- test | |
NODE Compare row=11 | |
- left | |
NODE Str row=11 | |
- s | |
OBJ b | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=11 | |
- func | |
NODE Name row=11 | |
- id | |
OBJ locals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=12 | |
- test | |
NODE Compare row=12 | |
- left | |
NODE Str row=12 | |
- s | |
OBJ c | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=12 | |
- func | |
NODE Name row=12 | |
- id | |
OBJ locals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=13 | |
- test | |
NODE Compare row=13 | |
- left | |
NODE Str row=13 | |
- s | |
OBJ b | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=13 | |
- func | |
NODE Name row=13 | |
- id | |
OBJ globals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
NODE Assert row=14 | |
- test | |
NODE Compare row=14 | |
- left | |
NODE Str row=14 | |
- s | |
OBJ c | |
- ops | |
OBJ NotIn | |
- comparators | |
NODE Call row=14 | |
- func | |
NODE Name row=14 | |
- id | |
OBJ globals | |
- ctx | |
OBJ None | |
- args | |
- keywords | |
- msg | |
OBJ None | |
table: top | |
name: top | |
type: module | |
line: 0 | |
identifiers: ['a', 'range', 'locals', 'globals', 'b', 'c'] | |
Syms: | |
sym: a flags: is_referenced is_assigned is_local | |
sym: range flags: is_referenced is_global | |
sym: locals flags: is_referenced is_global | |
sym: globals flags: is_referenced is_global | |
sym: b flags: is_referenced is_assigned is_local | |
sym: c flags: is_referenced is_assigned is_local | |
======== dis.dis ======== | |
0 LoadConst (<code object <listcomp> at ??? file "cp.py", line 2>) | |
1 LoadConst ("<listcomp>") | |
2 MakeFunction ((empty)) | |
3 LoadName (range, Global) | |
4 LoadConst (5) | |
5 CallFunction (Positional(1)) | |
6 GetIter | |
7 CallFunction (Positional(1)) | |
8 Pop | |
9 LoadConst ("a") | |
10 LoadName (locals, Global) | |
11 CallFunction (Positional(0)) | |
12 CompareOperation (NotIn) | |
13 Jump (16) | |
>> 14 Rotate (2) | |
15 Pop | |
>> 16 JumpIfTrue (20) | |
17 LoadName (AssertionError, Global) | |
18 CallFunction (Positional(0)) | |
19 Raise (1) | |
>> 20 LoadConst ("a") | |
21 LoadName (globals, Global) | |
22 CallFunction (Positional(0)) | |
23 CompareOperation (NotIn) | |
24 Jump (27) | |
>> 25 Rotate (2) | |
26 Pop | |
>> 27 JumpIfTrue (31) | |
28 LoadName (AssertionError, Global) | |
29 CallFunction (Positional(0)) | |
30 Raise (1) | |
>> 31 LoadConst (<code object <listcomp> at ??? file "cp.py", line 6>) | |
32 LoadConst ("<listcomp>") | |
33 MakeFunction ((empty)) | |
34 LoadConst (1) | |
35 LoadConst (1) | |
36 BuildTuple (2, false) | |
37 LoadConst (2) | |
38 LoadConst (2) | |
39 BuildTuple (2, false) | |
40 BuildList (2, false) | |
41 GetIter | |
42 CallFunction (Positional(1)) | |
43 Pop | |
44 LoadConst ("b") | |
45 LoadName (locals, Global) | |
46 CallFunction (Positional(0)) | |
47 CompareOperation (NotIn) | |
48 Jump (51) | |
>> 49 Rotate (2) | |
50 Pop | |
>> 51 JumpIfTrue (55) | |
52 LoadName (AssertionError, Global) | |
53 CallFunction (Positional(0)) | |
54 Raise (1) | |
>> 55 LoadConst ("b") | |
56 LoadName (globals, Global) | |
57 CallFunction (Positional(0)) | |
58 CompareOperation (NotIn) | |
59 Jump (62) | |
>> 60 Rotate (2) | |
61 Pop | |
>> 62 JumpIfTrue (66) | |
63 LoadName (AssertionError, Global) | |
64 CallFunction (Positional(0)) | |
65 Raise (1) | |
>> 66 LoadConst (<code object <dictcomp> at ??? file "cp.py", line 10>) | |
67 LoadConst ("<dictcomp>") | |
68 MakeFunction ((empty)) | |
69 LoadConst (1) | |
70 LoadConst (2) | |
71 BuildMap (1, false) | |
72 LoadAttr (items) | |
73 CallFunction (Positional(0)) | |
74 GetIter | |
75 CallFunction (Positional(1)) | |
76 Pop | |
77 LoadConst ("b") | |
78 LoadName (locals, Global) | |
79 CallFunction (Positional(0)) | |
80 CompareOperation (NotIn) | |
81 Jump (84) | |
>> 82 Rotate (2) | |
83 Pop | |
>> 84 JumpIfTrue (88) | |
85 LoadName (AssertionError, Global) | |
86 CallFunction (Positional(0)) | |
87 Raise (1) | |
>> 88 LoadConst ("c") | |
89 LoadName (locals, Global) | |
90 CallFunction (Positional(0)) | |
91 CompareOperation (NotIn) | |
92 Jump (95) | |
>> 93 Rotate (2) | |
94 Pop | |
>> 95 JumpIfTrue (99) | |
96 LoadName (AssertionError, Global) | |
97 CallFunction (Positional(0)) | |
98 Raise (1) | |
>> 99 LoadConst ("b") | |
100 LoadName (globals, Global) | |
101 CallFunction (Positional(0)) | |
102 CompareOperation (NotIn) | |
103 Jump (106) | |
>> 104 Rotate (2) | |
105 Pop | |
>> 106 JumpIfTrue (110) | |
107 LoadName (AssertionError, Global) | |
108 CallFunction (Positional(0)) | |
109 Raise (1) | |
>> 110 LoadConst ("c") | |
111 LoadName (globals, Global) | |
112 CallFunction (Positional(0)) | |
113 CompareOperation (NotIn) | |
114 Jump (117) | |
>> 115 Rotate (2) | |
116 Pop | |
>> 117 JumpIfTrue (121) | |
118 LoadName (AssertionError, Global) | |
119 CallFunction (Positional(0)) | |
120 Raise (1) | |
>> 121 LoadConst (None) | |
122 ReturnValue |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment