Код: Выделить всё
code = compile('l = list(1, 2, 3, 4, 5)', '', 'exec')
- Использование конструктора типа: list() или list(iterable)
Код: Выделить всё
code2 = compile('l2 = list[1, 2, 3, 4, 5]', '', 'exec')
Код: Выделить всё
>>> code = compile('l = tuple (1,2,3,4,5)', '', 'exec')
>>> dis.dis(code)
1 0 LOAD_NAME 0 (tuple)
2 LOAD_CONST 0 (1)
4 LOAD_CONST 1 (2)
6 LOAD_CONST 2 (3)
8 LOAD_CONST 3 (4)
10 LOAD_CONST 4 (5)
12 CALL_FUNCTION 5
14 STORE_NAME 1 (l2)
16 LOAD_CONST 5 (None)
18 RETURN_VALUE
>>> code2 = compile('l2 = tuple [1,2,3,4,5]', '', 'exec')
>>> dis.dis(code2)
1 0 LOAD_NAME 0 (tuple)
2 LOAD_CONST 0 ((1, 2, 3, 4, 5))
4 BINARY_SUBSCR
6 STORE_NAME 1 (l2)
8 LOAD_CONST 1 (None)
10 RETURN_VALUE
Аргумент mode указывает, какой код должен быть скомпилирован; это может быть 'exec', если source состоит из последовательности операторов, 'eval', если он состоит из одного выражения, или 'single', если он состоит из одного интерактивного оператора (в последнем случае будут напечатаны операторы выражений, результатом которых является что-то отличное от None).
Что именно здесь происходит? Где в документации это описано?
Подробнее здесь: https://stackoverflow.com/questions/798 ... e-argument
Мобильная версия