局部变量在Python的嵌套函数中的使用

时间:2019-06-13 22:21:15

标签: python

您能告诉我我在以下代码中犯了哪个错误吗?

def sumOfLeftLeaves(num):

    mytotal = 0

    def helper():
        mytotal = mytotal + num

    helper()
    return mytotal

inum = 100
print(sumOfLeftLeaves(inum))

2 个答案:

答案 0 :(得分:1)

您不能分配超出范围的变量(但是您可以读取它)。 Python在当前作用域中查找该变量,但未找到该变量,从而引发了UnboundLocalError。

最直接的解决方案是function Get-TemplateUser(){ $adusernames = Get-ADUser -Filter {enabled -eq $true} | ? {$_.GivenName -notlike ""} | select Name foreach($user in $adusernames){ $ComboBoxTemplate.Items.Add($user) } } 关键字:

nonlocal

但这是不好的做法。首选是将变量作为参数传递并返回结果。该示例旨在简化操作(显然,您是在递归地遍历二叉树),因此没有明显的改写,这一点也不荒谬。

答案 1 :(得分:0)

您应该在辅助函数中执行var声明,而实际上它没有返回任何内容:

def sumOfLeftLeaves(num):

    mytotal = 0

    def helper(mytotal, num):
        mytotal = mytotal + num
        return mytotal

    return helper(mytotal, num)

inum = 100
print(sumOfLeftLeaves(inum))