【发布时间】:2015-02-20 22:05:48
【问题描述】:
我正在为以前具有 Cython 工具链的模块编写 Python 字节码优化器。虽然现在可能已弃用,但我在摆弄它时遇到了一些奇怪的事情。考虑一下这段简单的代码:
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 现在是一个变量。
有没有简单的方法来解决这个问题?
干杯
【问题讨论】: