Python中如何实现序列的逐个元素增量赋值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计736个文字,预计阅读时间需要3分钟。
增量赋值运算符包括++、+=和*==。其后的特殊方法是__iadd__。如果一个类没有实现__iadd__方法,Python会退一步调用__add__方法。
增量赋值运算符有 += 和 *=。+= 背后的特殊方法是 __iadd__,如果一个类没有实现 __iadd__方法,Python 会退一步调用 __add__方法。这两个方法的区别在于,__iadd__为就地改动,不会改变原值的内存地址,而 __add__方法会得到一个新对象。
考虑下面一个表达式:
a += b如果 a 实现了__iadd__ 方法,a 会就地改动(内存地址不变)。如果 a 没有实现__iadd__方法,那么 a += b 这个表达式的效果就变得跟 a = a + b 一样了,生成一个新的对象赋给 a。
总体来讲,可变序列一般都实现了__iadd__ 方法,因此 += 是就地加法,而不可变序列根本就不支持这个操作。
*=和 += 一样,只是背后的特殊方法为__imul__。
本文共计736个文字,预计阅读时间需要3分钟。
增量赋值运算符包括++、+=和*==。其后的特殊方法是__iadd__。如果一个类没有实现__iadd__方法,Python会退一步调用__add__方法。
增量赋值运算符有 += 和 *=。+= 背后的特殊方法是 __iadd__,如果一个类没有实现 __iadd__方法,Python 会退一步调用 __add__方法。这两个方法的区别在于,__iadd__为就地改动,不会改变原值的内存地址,而 __add__方法会得到一个新对象。
考虑下面一个表达式:
a += b如果 a 实现了__iadd__ 方法,a 会就地改动(内存地址不变)。如果 a 没有实现__iadd__方法,那么 a += b 这个表达式的效果就变得跟 a = a + b 一样了,生成一个新的对象赋给 a。
总体来讲,可变序列一般都实现了__iadd__ 方法,因此 += 是就地加法,而不可变序列根本就不支持这个操作。
*=和 += 一样,只是背后的特殊方法为__imul__。

