Компилировать исходники Python без постоянной оптимизации сворачивания

У меня есть фрагмент Python следующим образом

5 + 6 * 8

Компиляция этого в AST дает:

>>> ast.dump(compile('5+6*8', '', 'eval', ast.PyCF_ONLY_AST))    
Expression(body=BinOp(left=Num(n=5), op=Add(), right=BinOp(left=Num(n=6), op=Mult(), right=Num(n=8))))

Обратите внимание, что в сгенерированном AST 6 * 8 не оптимизирован в 48.

Тем не менее, если я скомпилирую этот сгенерированный AST и разобрать 6 * 8 заменяется 48,

>>> astree = compile('5+6*8', '', 'eval', ast.PyCF_ONLY_AST)
>>> dis.disco(compile(astree, '', 'eval'))
  1           0 LOAD_CONST               0 (5)
              3 LOAD_CONST               3 (48)
              6 BINARY_ADD          
              7 RETURN_VALUE 

Мой вопрос

Как скомпилировать код в байт-код без постоянной оптимизации свертывания? Мне нужно сделать это для разработки обфускатора.

0 ответов

Другие вопросы по тегам