使用 += 但不追加列表时出现 UnboundLocalError [英] UnboundLocalError while using += but not append list

查看:23
本文介绍了使用 += 但不追加列表时出现 UnboundLocalError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I do not quite understand the difference between the following two similar codes:

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: 赋值前引用的局部变量 'temp'.为什么 + 运算符会产生错误?谢谢

calling y(2) returns UnboundLocalError: local variable 'temp' referenced before assignment. Why + operator generates the error? Thanks

推荐答案

回答标题,+和"append"的区别在于:

Answer to the heading, the difference between + and "append" is:

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

会给你:

[11, 22, 33, 44]

和.

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

会给你

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

回答错误

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

This is because when you make an assignment to a variable in a scope, that variable becomes local to that scope and shadows any similarly named variable in the outer scope

这里的问题是temp+=[j] 等于temp = temp +[j].临时变量在分配之前在此处读取.这就是为什么它会出现这个问题.这实际上在 python 常见问题解答中有介绍.

The problem here is temp+=[j] is equal to temp = temp +[j]. The temp variable is read here before its assigned. This is why it's giving this problem. This is actually covered in python FAQ's.

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

For further readings, click here. :)

这篇关于使用 += 但不追加列表时出现 UnboundLocalError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆