python 中的 exec() 命令无法从函数内部更改全局变量
exec() command in python can't change global variables from inside function
标题说明了我所知道的一切
def fun():
global v
v = 1
exec("global " + "k")
exec("k" + " = 1")
fun()
print(v)
# prints 1
print(k)
# NameError: name 'k' is not defined
我希望算法为 v 和 k 打印 1,但我收到错误。
只需将 globals()
添加到 exec
函数调用中:
def fun():
global v
v = 1
exec("k" + " = 1", globals())
fun()
print(v)
# prints 1
print(k)
# prints 1
如果你需要使用 exec,你可以像这样分配 k 的值
def fun():
exec("globals()['k'] = " + "1")
fun()
print(k) # output is 1
标题说明了我所知道的一切
def fun():
global v
v = 1
exec("global " + "k")
exec("k" + " = 1")
fun()
print(v)
# prints 1
print(k)
# NameError: name 'k' is not defined
我希望算法为 v 和 k 打印 1,但我收到错误。
只需将 globals()
添加到 exec
函数调用中:
def fun():
global v
v = 1
exec("k" + " = 1", globals())
fun()
print(v)
# prints 1
print(k)
# prints 1
如果你需要使用 exec,你可以像这样分配 k 的值
def fun():
exec("globals()['k'] = " + "1")
fun()
print(k) # output is 1