我有一个包含许多功能的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)
{}
任何帮助将不胜感激
答案 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)