
前菜
在我们应用Python的过程, 很多时刻会用到 + 运算, 例如:
先来看看字节码:
- a = 1 + 2
- print a
- # 输出
- 3
不但在加法中应用, 在字符串的拼接也同样发挥这重要的感化, 例如:
- a = 'abc' + 'efg'
- print a
- # 输出
- abcefg
- a = [1, 2, 3] + [4, 5, 6]
- print a
- # 输出
- [1, 2, 3, 4, 5, 6]
为什么膳绫擎不合的对象履行同一个 + 会有不合的效不雅呢? 这就涉及到 + 的重载, 然而这不是本文要评论辩论的重点, 膳绫擎的只是前菜罢了~~~
正文
先看一个例子:
- num = 123
- num = num + 4
- print num
- # 输出
- 127
这段代码的用处很明白, 就是一个简单的数字相加, 然则如许似乎很繁琐, 一点都Pythonic, 于是就有了下面的代码:
- num = 123
- num += 4
- print num
- # 输出
- 127
如今我们大年夜概明白了 += 实际上是干嘛了: 它应当能算是一个加强版的 + , 因为它比 + 多了一个写回本身的功能.不过是否可以或许写回本身, 照样得看对象自身是否支撑, 也就是说是否具备 Py_NotImplemented 标识, 是否支撑 sq_inplace_concat , 如不雅具备, 才能实现, 不然, 也就是和 + 效不雅一样罢了.
哈, 如许就很Pythonic了! 然则这种用法真的就是这么好么? 不必定. 看例子:
同样的, 在列表中也能应用, 例如:
- # coding: utf8
- l = [1, 2]
- l = l + [3, 4]
- print l
- # 输出
- [1, 2, 3, 4]
- # ------------------------------------------
- l = [1, 2]
- l += [3, 4] # 列表的+被重载了, 阁下操作数必须都是iterable对象, 不然会报错
- print l
- # 输出
- [1, 2, 3, 4]
看起来结不雅都一样嘛~, 然则真的一样吗? 我们改下代码再看下:
- # coding: utf8
- l = [1, 2]
- print 'l之前的id: '
推荐阅读
【51CTO.com原创稿件】2017年6月14日,杰和科技在北京国度泅水中间为了其NAS办事器新品举办了以“谋势而>>>详细阅读
本文标题:Python源码理解: +=和 xx = xx + xx的区别
地址:http://www.17bianji.com/lsqh/35818.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示