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