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

时间:2019-09-25 10:28:16

标签: python

我有一个包含许多功能的python脚本(myscript.py)和一个名为'resultsdict'(空字典)的全局变量。我想重用这些功能之一(myfunc)。

myfunc接受单个输入(输入),创建字典(tempdict),然后更新resultdict(键=输入,值= tempdict)。我通常通过遍历列表,将列表的每个成员作为输入来使用此功能。

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还包含一个名为resultdict的全局变量。当我将myfunc导入script2并运行它时,resultdict变量不会更新。

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

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

我想您是从resultsdict中的全局范围修改myfunc的。 尝试更改此行为以通过属性转移resultsdict

def myfync(x, resultsdict):
...

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

def myfync(x):
    global resultsdict
...

以任何方式修改可变对象都是不好的方法。

答案 1 :(得分:0)

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

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

for x in my mylist:
    ...

答案 2 :(得分:0)

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

from myscript import myfunc, resultsdict

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