我正在为以前具有 Cython 工具链的模块编写 Python 字节码优化器。虽然现在可能已弃用,但我在摆弄它时遇到了一些奇怪的事情。考虑这段简单的代码:
from opcode import opmap
globals().update(opmap)
print(STORE_GLOBAL)
这应该打印 97,正如其操作码(即 97)STORE_GLOBAL
所定义的那样。opmap
不过,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
现在是一个变量。
有没有一种简单的方法来克服这个问题?
干杯