2011-10-31 25 views

回答

8

全局變量總是可用於Python中的所有本地作用域,包括函數。在這種情況下,main()ABC都在範圍內。

global關鍵字不會做它看起來你認爲它所做的;相反,它允許本地範圍操作全局函數(它使全局變量「可寫」,可以這麼說)。考慮這些例子:

c = 4 
print c 
def foo(): 
    c = 3 
    print c 
foo() 
print c 

這裏,輸出將是

4 
3 
4 

現在,考慮一下:

c = 4 
print c 
def foo(): 
    global c 
    c = 3 
    print c 
foo() 
print c 

在這種情況下,輸出將是

4 
3 
3 

在第一種情況下,c = 3僅僅在c的陰影範圍內(即當功能定義結束時)。在第二種情況下,在我們編寫global c之後,我們實際上指的是對全局c的引用,因此更改c的值將導致永久性更改。

+0

附加文檔:http://docs.python.org/tutorial/classes.html#python-scopes-and-namespaces – ariefbayu

+2

這個答案並沒有說明「全局」是關於寫變量,而不是關於寫讀它們。 –

4

函數可以讀取封閉範圍中的變量。 global declaration用於編寫變量(以表明它們應該寫入全局字典而不是本地字典)。