Python 使一个函数活起来”;“内部”;模块

Python 使一个函数活起来”;“内部”;模块,python,metaprogramming,Python,Metaprogramming,我正在用byteplay.py在运行时构建一个函数。当我完成字节码的构造后,我获取code对象并创建一个新函数,如下所示: module = new.module("foomodule") fn = new.function(c.to_code(), {}, name.name) setattr(module, "fn", fn) 现在这似乎可以工作了,我可以调用module.foo(),它可以按预期工作。但是,如果fn尝试调用全局函数,则调用会失败,因为传入new.function的全局函数

我正在用byteplay.py在运行时构建一个函数。当我完成字节码的构造后,我获取code对象并创建一个新函数,如下所示:

module = new.module("foomodule")
fn = new.function(c.to_code(), {}, name.name)
setattr(module, "fn", fn)
现在这似乎可以工作了,我可以调用module.foo(),它可以按预期工作。但是,如果fn尝试调用全局函数,则调用会失败,因为传入new.function的全局函数列表为空{}


问题是,我希望全局列表始终引用模块。那我该怎么做呢?如何将模块传递到新的.function?

将第二行更改为:

fn = new.function(c.to_code(), module.__dict__, name.name)

工作得很有魅力!想到这一点,我想我试过了,但我又试了一次,效果很好!