這裏是我的測試腳本:訪問全局函數的變量在局部函數
def main(): #global
n = 1
z = None
def addone(): #local
if not z:
n = n+1
addone()
print n
main()
我步入addone()
功能,一旦它擊中主叫用戶線。 此時我只能看到變量z
,但看不到n
。
現在,如果n
被賦值之前,應該不是z
?
同樣,如果我將n=n+1
更改爲z='hi'
,我不能再看到z
!這與我以前關於本地/全局功能的所有信念相反!你知道得越多,你知道的就越不瞭解Python。
問題(S):
爲什麼我能看到一個而不是其他?
我想預先將
global
添加到我想重新分配的這些變量中嗎?
也許這可能會有所幫助:http://stackoverflow.com/a/21978980/748858 – mgilson
啊哈,確實有用。謝謝。我原以爲我不得不在功能之外使用'global',但是我可以在內部使用它。 – tenwest
等待...也許這是我想的。不需要在功能的外部**定義'global'?我得到一個'NameError:全局名'x'未定義'。在函數之外調用它'global'並且使其工作。 – tenwest