我写了一些代码,最近在编写函数的函数时遇到了“非本地”的需求(在处理递归时遇到了这个问题)。
例如:
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 的一种方法,因此它只能通过获取外部函数中定义的初始值来开始。