gpt4 book ai didi

python - add 和 iadd 的区别?

转载 作者:太空狗 更新时间:2023-10-30 02:17:42 25 4
gpt4 key购买 nike

我不理解 iadd、imul 等就地运算符的用途。

Many operations have an “in-place” version. The following functions provide a more primitive access to in-place operators than the usual syntax does; for example, the statement x += y is equivalent to x = operator.iadd(x, y). Another way to put it is to say that z = operator.iadd(x, y) is equivalent to the compound statement z = x; z += y.

似乎我总是可以互换使用就地运算符或常规运算符。一个比另一个好吗?

最佳答案

不可变对象(immutable对象)的“就地”函数不能使用 in-place algorithm 实现,而对于可变对象,它们可能是。一个简单的事实是不可变对象(immutable对象)不会改变。

否则,在考虑可变对象时,使用“就地”与非“就地”函数会产生深远的影响。请考虑以下事项:

>>> A = [1,2,3]
>>> B = A
>>> id(A)
4383125944
>>> id(B)
4383125944
>>> A = A + [1]
>>> id(A)
4383126376
>>> A += [1]
>>> id(A)
4383126376

假设您正在编写一些代码,其中假定 B 是 A(可变对象)的软副本。通过在修改 A 时不使用“就地”功能,可能会悄悄错过对 B 的所需修改。更糟糕的是,对代码的快速目视检查会让人觉得代码(例如,A = A + [2])是正确实现的(也许它在数学上是有意义的)。如果真的只想修改对象而不接收新对象,那么“就地”功能是正确的方法。

两者都不比对方好。相反,在特定情况下,其中一个可能优于另一个。

关于python - add 和 iadd 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39402501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com