列表中 = 运算符的异常行为
在 Python 中,= 运算符在与列表一起使用时可能会表现出意外的行为。这种特殊的行为源于 iadd 和 add 特殊方法之间的区别。
iadd 方法允许就地添加、修改它所操作的对象。另一方面,add 通常返回一个新对象并由运算符使用。
对于列表等可变对象,= 调用 __iadd__,导致对象本身的修改。但是,对于元组、字符串和整数等不可变类型,会生成一个新对象(实际上,a = b 转换为 a = a b)。
因此,可以在 iadd 之间进行选择并且 add 至关重要。使用 a = b 会导致调用 iadd 并随后修改 a,而 a = a b 创建一个新对象并将其分配给 a。它们代表不同的操作。
对于同时支持 iadd 和 add__ 的类型,在选择适当的方法时需要仔细考虑。 a = b 将触发 __iadd 并因此修改 a,而 a = a b 将产生一个新对象并将其分配给 a.
以上是为什么 Python 的 = 运算符与列表的行为不同?的详细内容。更多信息请关注PHP中文网其他相关文章!