簡體   English   中英

Python - 導入的 function 不修改局部變量

[英]Python - imported function doesn't modify local variable

我有一個 python 腳本 (myscript.py),其中包含許多函數和一個名為“resultsdict”的全局變量(一個空字典)。 我想重用其中一個功能(myfunc)。

myfunc 接受單個輸入 (input),創建一個字典 (tempdict),然后更新 resultsdict (key = input, value = tempdict)。 我通常通過循環一個列表來使用這個 function,調用列表的每個成員作為輸入。

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)
{}

任何幫助將不勝感激

我猜你從你的myfunc中的全局 scope 修改resultsdict 嘗試更改此行為以通過屬性傳輸resultsdict

def myfync(x, resultsdict):
...

或添加有關該resultsdict的行來自全局范圍(更糟糕的方式):

def myfync(x):
    global resultsdict
...

並以任何方式修改某些 function 中的可變 object 是不好的方法。

在您的 for 語句中,您使用“list”,但在之前的行中,您聲明“mylist”! 注意:沒有“列表”,這就是您的代碼不起作用的原因。

編輯您的 for 語句,如下所示:

for x in my mylist:
    ...

也導入結果字典。 然后,如果您想復制。

from myscript import myfunc, resultsdict

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM