我想提供~/.node-gyp
一些已编译的代码(通过eval
),在评估时应该更新我传入的compile
中的一些变量。
locals
答案 0 :(得分:0)
你可以这样做(它无论如何都适用于CPython 3.6.3),虽然不能更新locals()
返回的字典(参见注意在documentation。
x = 5
code = compile("x = x * 2", "<string>", "single")
eval(code, locals())
print('x:', x) # -> x: 10
请注意,@ juanpa.arrivillaga在评论中指出,在模块级别,locals()
与globals()
相同 - 因此您可以通过使用它来避免限制。换句话说,eval(code, globals())
会更好,避免出现问题。
(我在代码开头验证了他们与assert locals() == globals()
相同,以验证它们是否相同。)