gpt4 book ai didi

python - 将函数 "inside"设为模块

转载 作者:行者123 更新时间:2023-12-01 06:04:29 25 4
gpt4 key购买 nike

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

module = new.module("foomodule")
fn = new.function(c.to_code(), {}, name.name)
setattr(module, "fn", fn)

现在这似乎可以工作,我可以调用 module.foo() 并且它按预期工作。但是,如果 fn 尝试调用全局函数,则调用会失败,因为传递到 new.function 的全局变量列表为空 {}。

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

最佳答案

将第二行更改为:

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

关于python - 将函数 "inside"设为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com