gpt4 book ai didi

python - 修改Python导入脚本的命名空间

转载 作者:太空狗 更新时间:2023-10-30 00:29:18 24 4
gpt4 key购买 nike

我希望我的模块中有一个函数能够访问和更改导入它的脚本的本地命名空间。这将启用如下功能:

>>> import foo
>>> foo.set_a_to_three()
>>> a
3
>>>

这在 Python 中可行吗?

最佳答案

@omz 慷慨地提供了答案在 Slack 团队中:

import inspect
def set_a_to_three():
f = inspect.currentframe().f_back
f.f_globals['a'] = 3

这提供了优于 __main__ 解决方案的优势,它可以在多个级别的导入中工作,例如,如果 a 导入 b 导入我的module, foo, foo 可以修改 b 的全局变量,而不仅仅是 a 的(我认为)

不过,如果我没理解错的话,修改本地命名空间比较复杂。正如其他人指出的那样:

It breaks when you call that function from within another function. Then the next namespace up the stack is a fake dict of locals, which you cannot write to. Well, you can, but writes are ignored.

如果有更可靠的解决方案,将不胜感激。

关于python - 修改Python导入脚本的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171723/

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