当前位置:  开发笔记 > 编程语言 > 正文

使用+ =但不附加列表时的UnboundLocalError

如何解决《使用+=但不附加列表时的UnboundLocalError》经验,为你挑选了1个好方法。

我不太明白以下两个相似代码之间的区别:

def y(x):
    temp=[]
    def z(j):
        temp.append(j)
    z(1)
    return temp

调用y(2)返回[1]

def y(x):
    temp=[]
    def z(j):
        temp+=[j]
    z(1)
    return temp

调用y(2)返回UnboundLocalError: local variable 'temp' referenced before assignment.为什么+运算符会生成错误?谢谢



1> Jay Geeth..:

回答标题,+和"追加"之间的区别是:

[11, 22] + [33, 44,] 

会给你:

[11, 22, 33, 44]

和.

b = [11, 22, 33]
b.append([44, 55, 66]) 

会给你

[11, 22, 33 [44, 55, 66]] 

回答错误

这是因为当您对作用域中的变量进行赋值时,该变量将成为该作用域的局部变量,并在外部作用域中隐藏任何类似命名的变量

这里的问题temp+=[j]是等于temp = temp +[j].临时变量在分配之前在此处读取.这就是它给出这个问题的原因.这实际上包含在python FAQ中.

如需进一步阅读,请单击此处.:)

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有