【问题标题】:why Python local variable referenced before assignment shows here? [duplicate]为什么在这里显示分配之前引用的 Python 局部变量? [复制]
【发布时间】:2021-08-04 09:08:49
【问题描述】:
class Solution:
    def pathSum(self, root: TreeNode, targetSum: int) -> List[List[int]]:
        ans = []
        tmp = []
        sum_node = 0
        def dfs(node):
            if not node:
                return
            sum_node += node.val
            tmp.append(node.val)
            if sum_node == targetSum and not node.left and not node.right:
                ans.append(tmp[:])
            dfs(node.left)
            dfs(node.right)
            sum_node -= tmp.pop()
        dfs(root)
        return ans
    

这是我的leetcode 113的解决方案。为什么它显示'UnboundedLocalError: local variable 'sum_node' referenced before assignment'?

【问题讨论】:

    标签: python local-variables


    【解决方案1】:

    因为sum_node 不是dfs() 函数的局部变量(因此,您不能使用诸如+= 之类的增强赋值,因为没有什么可读写的;尝试执行@987654324 @ 会起作用,但只会影响本地名称)。

    您需要添加一个nonlocal 语句,以使内部dfs() 函数的sum_node 名称引用pathSum() 中的sum_node 名称。

    def dfs(node):
        nonlocal sum_node
        ....
    

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 2021-02-18
      • 2012-08-07
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多