[英]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.