2011-02-04 81 views
0
x=5 

def printx() 
    print x 
    x=10 

運行這個運行時錯誤給unboundlocal錯誤局部變量 - 與當地

但是當我的功能只是打印喜沒有錯誤..

+0

相關:http://stackoverflow.com/questions/1188944/reason-for-unintuitive-unboundlocalerror-behaviour – 2011-02-04 18:41:53

+1

重複http://stackoverflow.com/questions/1281184/why-cant-i-set-a -global-variable-in-python – 2011-02-04 18:45:56

回答

1

只需在函數值分配給x是使其成爲一個局部變量,因此影響前一行指定的全局x。並且,您正在嘗試打印該行,該本地版本x尚未初始化。我們很好奇在後面的工作上做些什麼會影響到它之前的線條,但這只是它的工作原理。

您不需要任何特殊的聲明來讀取全局變量,因此它在沒有賦值的情況下工作。但是,如果您寧願分配給全球x,而不是創建新的本地x,則必須在分配給它之前指定global x