擅长:python、mysql、java
<p>不能将变量赋值给超出范围的变量(但可以读取它)。Python在当前范围中查找变量,但没有找到它,从而引发UnboundLocalError</p>
<p>最直接的解决方案是<code>nonlocal</code>关键字:</p>
<pre><code>def sumOfLeftLeaves(num):
mytotal = 0
def helper():
nonlocal mytotal
mytotal = mytotal + num
helper()
return mytotal
inum = 100
print(sumOfLeftLeaves(inum))
</code></pre>
<p>但这是不好的做法。首选方法是将变量作为参数传递并返回结果。这个例子是为了简化而设计的(显然你是在递归地遍历一个二叉树),所以没有明显的重写是有点荒谬的</p>