Python 进阶 —— x = x+1 vs x += 1
来源:互联网 发布:淘宝黑号了 编辑:程序博客网 时间:2024/06/02 07:28
(1)x += 1
in-place(就地)修改 x 自身的值,
(2)x = x + 1
会隐式地创建一个新的对象,表示 x 与 1的和,同时用同样的 name 指向它,所以它的含义和
y = x+1
相同,只不过这里将y
取名为x
罢了;
当我们用多个变量名指向同一对象实体时,可能对比会更加明显:
>> y = x = []>> x += [5]>> x[5]>> y [5]>> x = x + [5]>> x[5, 5]>> y[5]
以下是关于 +
与+=
运算符重载(magic method)的说明
+
:调用__add__
,不修改它的两个操作数+=
:调用__iadd__
,会修改它自身的值
注:表达式本身是没有返回值的,如x = 1
,甚至不会返回 None,y = x = 1
含义不是y = (x = 1)
,而是 y
和 x
指向相同的1
所在的内存对象。
如此我们也可理解 Python 下简洁的 swap:
x, y = y, x
是将 x 指向 原始的 y,y 指向 原始的 x,也即可简单理解为同时发生,而不是:
x = yy = x # 走的就是C/C++ swap 的老路了 # 需要借助中间变量
references
[1] Python Difference between x = x+1 and x += 1
0 0
- Python 进阶 —— x = x+1 vs x += 1
- Python有趣的现象——x+=y VS x=x+y
- x=x&(x-1)
- x=x&(x-1)
- x = x&(x-1)
- x = x&(x-1)
- x &= (x-1)
- x&(x-1)=?
- x=x+1、x+=1、x++、++x
- c++ x=x|(x+1); x&(x-1)
- 表达式"x=x&(x-1)
- 表达式"x=x&(x-1)"
- 表达式"x=x&(x-1)"
- x=x+1,x+=1,x++的区别
- x^1 + x ^2 +...+x ^n = m 求x
- x=x|(x+1);和x=x&(x-1)?
- point vs pixel @1x,@2x,@3x
- Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)
- linux 常用命令找不到解决方法
- iframe页面切换、高度自适应
- 函数指针作参数&运算符重载
- 复制vm镜像出现网卡不存在的问题,重启也无效
- @autoreleasepool 在什么时候使用
- Python 进阶 —— x = x+1 vs x += 1
- C++实验4-【项目3:乘法口诀表】
- 利用Libuv编写异步多线程的addon实例
- java线程系列---Runnable和Thread的区别
- 抽象
- poj 2975 Nim(博弈)
- Support Vector Machines (SVM) in Ruby
- Linux下的IO端口和IO内存
- Nmon 监控服务器性能指数