您的位置:首页 > 编程语言 > Python开发

Python 进阶 —— x = x+1 vs x += 1

2016-04-25 23:03 531 查看
(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 = y
y = x
# 走的就是C/C++ swap 的老路了
# 需要借助中间变量


references

[1] Python Difference between x = x+1 and x += 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: