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 指向它,所以它的含义和
当我们用多个变量名指向同一对象实体时,可能对比会更加明显:
以下是关于
注:表达式本身是没有返回值的,如
如此我们也可理解 Python 下简洁的 swap:
是将 x 指向 原始的 y,y 指向 原始的 x,也即可简单理解为同时发生,而不是:
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相关文章推荐
- Python学习-机器学习实战-ch06 支持向量机
- Python collections.defaultdict()与dict的使用和区别
- 【Grades Crawler】利用python编写爬虫 爬取西电教务处成绩并本地保存
- 在Python中使用机器学习(1)—安装四库
- python中实现有序字典
- 【LeetCode-343】Integer Break
- python编码问题
- Python学习笔记12
- Python分割list
- Python Logging模块-Logger,Handler,Formatter
- 用python将博客园的文章爬取到本地
- 聚类(一)pyspark 实现特征的ID化
- 【Python】set与frozenset的区别
- python10min系列之多线程下载器
- python 字典有序无序及查找效率,hash表
- Python代码分析工具之dis模块
- 推荐——基于python
- python实现单向链表
- Python - decorator
- Python学习二(生成器和八皇后算法)