我写了一些代码,最近在编写函数的函数时遇到了“非本地”的需求(在处理递归时遇到了这个问题)。
例如:
def swapPairs(head):
head = None
def helper(node):
nonlocal head
...
head= nex.next
return helper(node.next)
我的问题很简单,因为我们调用递归函数helper(node.next),然后循环回nonlocal head- 是否head取值 None (由于非本地头)?或者它是否保留head = nex.next,它在之前的递归调用中被分配?
所以我想了解是否'nonlocal head'会导致head总是取它在外部函数中分配的任何值,还是不是这样?相反,它只是在内部函数中初始化 head 的一种方法,因此它只能通过获取外部函数中定义的初始值来开始。