Python学习:元组中的“+=”的操作思考

编程入门 行业动态 更新时间:2024-10-26 10:34:44

Python学习:元<a href=https://www.elefans.com/category/jswz/34/1771283.html style=组中的“+=”的操作思考"/>

Python学习:元组中的“+=”的操作思考


在测试元组的可变性时,出现如上的情况。在元组中包含有可变元素列表,当使用运算符“+”(1)和“+=”(2)时,出现了不一样的结果。两种情况都出现了错误,但第(2)种情况的结果却起作用了。
在参考了网上的文章和与同行交流后,进行如下解析:
1.注意“+ ”和“ += ”的区别:“+=”背后的魔法方法是__iadd__;“+”背后的魔法方法是__add__。当变量为“可变数据类型”时, ‘+=’ 不创建新对象。例如列表、字典;当变量为“不可变数据类型”时,不管是‘+’还是‘+=’,都得创建新对象。这是Python对immutable类型的处理机制。
2.对上图中出现的问题,一同行(感谢同行)给出如下解释:
(+=)An augmented assignment evaluates the target and the expression list, performs the binary operation specific to the type of assignment on the two operands, and assigns the result to the original target.
根据文档中的描述:
(1)+=语句首先计算x[0],
(2)然后根据x[0]和[10]的类型来决定具体的二值操作。由于二者都是列表,列表的+=操作是一个就地(in place)的连接操作,所以x[0]对应的列表被修改(但不是通过赋值进行的)了。
(3)接下来要将结果assign回x[0],但由于x本身是一个元组,x[0]被赋值本身就是不被允许的,所以触发了错误。

参考如下博文:
.html

更多推荐

Python学习:元组中的“+=”的操作思考

本文发布于:2024-02-17 08:13:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1693291.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组中   操作   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!