UnboundLocalError while using += but not append list(使用 += 但未附加列表时出现 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: local variable 'temp' referenced before assignment
.为什么 +
运算符会产生错误?谢谢
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 += 但未附加列表时出现 UnboundLocalError


基础教程推荐
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01