gpt4 book ai didi

python - 如何修改全局变量?

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:16 31 4
gpt4 key购买 nike

这是更新全局变量问题的简化版本——在 test.py 我有:

k1 = 1

def set_v(k, v):
if k in globals():
globals()[k] = v;
read_v()

def read_v():
print("after {}".format(k1))

执行后从 python 解释器运行的代码:

from test.py import *

产量...

>>> k1
1
>>> set_v('k1',2)
after 2
>>> set_v('k1',3)
after 3
>>> k1
1

我无法理解这一点。k1 具有全局范围,因为 read_v() 在全局 dict 中看到它。为什么全局 k1 对解释器可见而没有改变?我试过 setattr(module, var, val)...但这和这没什么不同。

最佳答案

Python 中的全局变量仅在模块内是全局变量。

如果您想修改导入模块中的全局变量,您需要使用 module.variable 访问它。

在您的测试上下文中,这意味着:

import test.py as test
from test.py import *

print(test.k1)

set_v('k1',2)
set_v('k1',3)

print(test.k1)

输出:

1
after 2
after 3
3

关于python - 如何修改全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45119612/

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