Я пишу оптимизатор байт-кода Python для модуля, который ранее имел целую цепочку инструментов Cython. Хотя это может быть устарело к настоящему времени, я столкнулся с чем-то странным, играя с ним. Рассмотрим этот простой кусок кода:Cython: использовать globals(). Update (...)?
from opcode import opmap
globals().update(opmap)
print(STORE_GLOBAL)
Это должно напечатать 97, а STORE_GLOBAL
определяется в opmap
с опкодом (который 97). Cython скажет мне, что STORE_GLOBAL
не определен, хотя:
Error compiling Cython file:
------------------------------------------------------------
...
from opcode import opmap
globals().update(opmap)
print(STORE_GLOBAL)
^
------------------------------------------------------------
test.py:5:18: undeclared name not builtin: STORE_GLOBAL
Причина этого довольно легко, я думаю. Я предполагаю, что он не обновляет глобальные переменные, поэтому он не знает о STORE_GLOBAL
, который теперь является переменной.
Есть ли неудобный способ преодолеть эту проблему?
Приветствия
Да, это то, о чем я думал. Спасибо за ваше разъяснение. – hellerve