Python eval hook时局部和全局变量报错NameError问题
globals 用于指定运行时的全局命名空间,类型是字典,缺省时使用的是当前模块的内置命名空间。locals 指定运行时的局部命名空间,类型是字典,缺省时使用 globals 的值。值得注意的是,这两者不代表真正的命名空间,只在运算时起作用,运算后则销毁。原因其实是变量的作用域问题,在hook的代码里应该在调用原函数前把locals()和globals()还原回hook前的值,这样才能确保局部和全局的变量都能被正确调用。globals 与 locals 是可选参数,默认值是 None。
原创
2023-12-26 20:21:57 ·
493 阅读 ·
0 评论