Python中运算符+=表示什么
创始人
2024-11-18 13:41:07
0次

前言:

今天在运行之前写的一个Python脚本时,发生了一个奇怪的现象(我怎么老遇到奇怪的现象~~)。当时的代码大概长这样:

a = [1, 2, 3]
b = [4, 5, 6]
# ...一大段逻辑
c = a
c += b
# ...一大段逻辑
# 在这里,a变成了[1, 2, 3, 4, 5, 6]

首先,上面的代码一个函数过于长了,实在不像话

当时的情景是这样的,程序并没有想我预期中一样运行。我找了半天,没有找到对a变量的修改或赋值操作。

最终,发现了藏在中间的c变量,因为是列表对象的引用赋值,所以直接修改了a变量。我将两个变量的地址打印出来,确实是这样的。

Python中运算符+=表示什么

Python中运算符+=表示什么

本来,查到这里基本上破案了。也应该没有后续了

但我上网查了一下,有人说用 =+就不会出现这种情况,我轻蔑的笑了,有什么区别么?不信邪的我试了一下。

Python中运算符+=表示什么

Python中运算符+=表示什么

这是什么原因呢?

深究:

根据我的推测,必然是+=操作改变的是原对象,=+操作返回了新的对象。尝试一下:

Python中运算符+=表示什么

Python中运算符+=表示什么

Python中运算符+=表示什么

Python中运算符+=表示什么

由此即可得知。

解惑:

那为什么Python会在 +=操作时,直接修改原对象。而=+操作却要返回新的对象呢?

简单推测一下,可能Python的作者认为,+=操作是要将后边的值加到自身上。而+则是两个值的运算操作。根据表达是也可以看出:

a += b # 这里只涉及两个变量,将b的内容直接加到a上

c = a + b # 这里涉及到了三个变量,将后两者内容相加后赋值给新的变量

最后,既然+=和=+的实现不同,那么同理列表的-=和=-、*=和=*、/=和=/的实现也必然不同。然而并非如此,list没有实现减法和除法的操作。但乘法确实也是这样。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...