我有一個函數,它將遞歸地執行另一個函數,我想共享該函數的所有執行變量。Python共享全局變量僅適用於函數內部的功能
類似的東西:
def testglobal():
x = 0
def incx():
global x
x += 2
incx()
return x
testglobal() # should return 2
不過,我收到提示NameError: name 'x' is not defined
有哈克解決方案,使列表,並使用該列表的第一個值作爲x
。但是這太難看了。
那麼如何分享x
與incx
函數?或者我應該使用完全不同的方法?
在Python 3有一個新的關鍵字,[非局部](https://docs.python.org/3/ reference/simple_stmts.html#the-nonlocal-statement),這正是你想要的。請記住,這是一個閉包,所以你可以在不改變的情況下訪問'x',但是在'incx'內部賦值(例如'x = 1')會使'x'局部爲'incx',因此不會引用相同的變量。 'nonlocal'實現了這一點。 – alexpeits