我正在嘗試將字典中的值分配給變量,但變量保持不變。該值是另一個字典。我用來生成字典的代碼可以在這里找到:http : //pastebin.com/Q2Hc8Ktp我自己編寫了它,并對其進行了測試,沒有出現任何問題。這是我嘗試從字典中復制字典的代碼片段。_classes = {}def populateClasses(): print "Classes Exist" cp = Preferences(''.join([resource_path,"resources.ini"])) print cp _classes = cp.getPreferences()['Classes']populateClasses()print _classes當我打印出cp時,它顯示正確的數據,但是當我嘗試打印_classes時,它僅顯示{}注意:從函數內部打印_classes可以正常工作,但不能從函數外部打印。_classes在全局范圍內定義
2 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
如果要更改全局變量的值,則_classes需要使用global:
def populateClasses():
global _classes # <<<<<< THIS
print "Classes Exist"
cp = Preferences(''.join([resource_path,"resources.ini"]))
print cp
_classes = cp.getPreferences()['Classes']
否則,您的方法將創建一個單獨的局部變量,也稱為_classes。方法返回后,此變量將超出范圍。

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
相反global
,您可能會使用_classes.update(cp.getPreferences()['Classes'])
。
全局變量的規則是,global
如果您對該關鍵字進行寫操作,則需要該關鍵字,但是如果您只是訪問該變量(即使該訪問正在使狀態發生變化),則不需要該關鍵字。這就是為什么我上面的建議不需要global
聲明,而原始代碼則需要這樣做。當您“將列表分配給兩個變量”并且不需要時,也可能發生這種情況global
。
添加回答
舉報
0/150
提交
取消