【发布时间】:2021-11-17 12:17:39
【问题描述】:
我正在尝试在 exec 字符串中声明和更改全局变量,如下所示:
ostr = "didn't work"
nstr = "worked"
def function():
exec("global ostr; ostr = nstr")
#global ostr; ostr = nstr
print(ostr)
lv='ostr' in globals()
print(lv)
ostr='asd'
function()
但是,在打印语句中出现以下错误:
UnboundLocalError: local variable 'ostr' referenced before assignment
但是,如果我在 exec 语句之后注释掉“exec”行并取消注释行,代码就可以正常工作。
如何使用“exec”修复此错误?我想声明全局变量并在 exec 字符串中修改这些全局变量,并使这些修改在后续行的“函数”中可见。
【问题讨论】:
-
坦率地说,这听起来像是所有最糟糕的做法。虽然肯定有关于为什么的答案,甚至可能关于如何“修复”它……我会重新评估你在这里所做的一切的整个方法。
-
我正在尝试在 python 中实现一个脚本。类似于 matlab 脚本。在当前工作区中执行的一些其他代码。
标签: python variables runtime-error exec global