'增量赋值(augmented assignment)', 多么痛的领悟!

'增量赋值(augmented assignment)', 多么痛的领悟!

深刻理解x += ax = x + a 的不同:

按理说上面的两条语句是等价的, 功能上完全一样的. 之所以说不同, 那是因为经历了痛苦的领悟之后, 才得出的结论.
通常在写代码的时候, 按照思维的惯例, 写 x = x + a 与 x += a, 可以完全等价, 当x为一个简单的变量时, 没有关系的. 但是当x为一个复杂的对象, 需要对它的局部/切片做原地修改时, 用增量赋值操作符就显现出优势了, 无论是从编写上还是从易读性上来说.

比如:
x = pd.DataFrame();
x.shape = [2000, 5];
x.columns = u'date/open/high/low/close/volume/'.split('/')
我们需要对x的200行之后的行的 close和volume列进行除法运算, 可以这样写:

x.ix[ 200:, ['close', 'volume']] /= 1.23

易读也易写!

较为复杂的切片写一遍已经不易, 如果在右边再写一遍该有多么地痛苦!

结论: 当需要对变量进行原地修改时, 记住一定要用'增量赋值'操作符.
善用增量运算符, 提升代码质量!

原文地址:https://www.cnblogs.com/duan-qs/p/8085845.html