我有一个函数,它将递归地执行另一个函数,我想共享该函数的所有执行变量。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