Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python导入的函数不修改局部变量_Python - Fatal编程技术网

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

Python导入的函数不修改局部变量,python,Python,我有一个python脚本myscript.py,其中包含许多函数,还有一个名为'resultsdict'的全局变量,它是一个空字典。我想重用其中一个函数myfunc myfunc接受单个输入,创建字典tempdict,然后更新resultsdict key=input,value=tempdict。我通常通过循环列表来使用这个函数,调用列表中的每个成员作为输入 resultsdict = {} mylist = [1,2,3] for x in mylist: myfunc(x) pri

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

myfunc接受单个输入,创建字典tempdict,然后更新resultsdict key=input,value=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还包含一个名为resultsdict的全局变量。当我将myfunc导入script2并运行它时,resultsdict变量不会更新

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

如果您有任何帮助,我们将不胜感激。

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

编辑您的声明,如下所示:

for x in my mylist:
    ...

也导入resultsdict。 如果你想复制的话

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
...

无论如何,在某个函数中修改可变对象都是不好的方法。

但是您没有从myfunc返回任何内容,而且在myfunc中您正在重新声明resultsdict={},因此每次调用该函数时,它都会设置resultsdict={}。请显示所有代码并给出预期结果的示例。myfunc将更新其范围内的resultsdict变量。这根本不是它的工作原理。您可以使用类,也可以使用显式接受和返回值。myfunc不返回任何内容是正确的。不正确的是,每次我调用函数时,它都会设置resultsdict={}——赋值是在脚本主体中完成的,而不是在函数中完成的,这是伪代码中的一个错误。更新原始帖子以修复