Python - 导入的函数不修改局部变量



我有一个python脚本(myscript.py(,其中包含许多函数,以及一个名为"resultsdict"(一个空字典(的全局变量。 我想重用其中一个函数(myfunc(。

Myfunc 采用单个输入(输入(,创建一个字典(临时(,然后更新结果字典(键 = 输入,值 = 临时(。 我通常通过循环访问列表来使用此函数,调用列表中的每个成员作为输入。

resultsdict = {}
mylist = [1,2,3]
for x in mylist:
myfunc(x)
print(resultsdict)
{1:{dict of results-1},2:{dict of results-2},3:{dict of results-3}}

我想在第二个脚本(script2.py(中重用myfunc。 script2.py 还包含一个名为 resultsdict 的全局变量。 当我将 myfunc 导入 script2 并运行它时,结果字典变量不会更新。

from myscript import myfunc
resultsdict = {}
mylist = [1,2,3]
for x in mylist:
myfunc(x)
print(resultsdict)
{}

任何帮助将不胜感激

我猜你在myfunc中从全局范围内修改resultsdict. 尝试更改此行为以通过属性传输resultsdict

def myfync(x, resultsdict):
...

或添加有关该resultsdict来自全局范围的行(更糟糕的方式(:

def myfync(x):
global resultsdict
...

并且以任何方式在某些函数中修改可变对象都是不好的方式。

也导入结果字典。 然后,如果您想复制。

from myscript import myfunc, resultsdict
mylist = [1,2,3]
for x in mylist:
myfunc(x)
print(resultsdict)

在您的 for 语句中,您使用 "list",但在之前的行中,您声明 "mylist" !注意:没有"列表",这就是您的代码不起作用的原因。

编辑您的 for 语句,如下所示:

for x in my mylist:
...

最新更新