2014-11-15 16 views
0

我有課堂筆記,但我不確定實際發生了什麼。 除了增加混淆之外,陰影允許做什麼目的?我認爲,因爲globalString是一個字符串類型,它不能被修改?我如何訪問原始值?什麼是內存條件的實例?如何在全局變量中使用陰影?

globalList = [1,2,3] 
globalString = "global"  # can't be modified because it's a string 

def updateGlobalString(): 
    global globalString  # Does line this do anything? 
    globalString = "new" 

print(globalString) 
>>> "global" 
updateGlobalString() 
>>> "new" 

def updateGlobalList(): 
    globalList.append(4) 

print(globalList) 
>>> [1,2,3] 
updateGlobalList() 
print(globalList) 
>>> [1,2,3,4] 

如果python列表是可變的這個例子與字符串相比如何改變公式?而只是爲了澄清,這些值中的任何一個都是實際的全球?

謝謝。

回答

1

全局意味着變量將出現在全局空間中。因此,1 st函數將刪除全局名稱空間中的舊字符串,並用新名稱空間替換它。但是,列表是可變的,直接結果可以在全局範圍之外更改。

2

陰影不是一種技術或工具,它只是Python的範圍規則的結果。

我很困惑你的問題是否有任何變量是全局的。在模塊級別聲明的任何內容都是全局的。在非全局範圍中使用global關鍵字時,您可以將該名稱重新綁定到其他對象,並使該重新綁定在全局範圍內也可以生效:否則,您只需在本地範圍內定義一個新變量(即確實會掩蓋原始變量)。