我正在使用普通的集合并运算,有两种方式,即x|=set([4,5,6])
和x=x|set([4,5,6])
,为什么它们会表现不同呢?
对于简单的整数变量,它的工作方式是相同的,即无论我使用x=x+1
还是x+=1
,结果都是相同的。
x=set([1,2,3])
y=x
x|=set([4,5,6])
x
set([1, 2, 3, 4, 5, 6])
y
set([1, 2, 3, 4, 5, 6])
x=set([1,2,3])
y=x
x=x|set([4,5,6])
x
set([1, 2, 3, 4, 5, 6])
y
set([1, 2, 3]) # why does the value of y remain unchanged.
x|=set([4,5,6])
是原地操作,而x=x|set([4,5,6])
则是创建一个新对象的赋值操作。 - roganjoshv (op) = x
只是v = v (op) x
的简写。它似乎不符合 Python 的风格,或者我可能不够荷兰化。 - JohanLy
的变化,那么绑定到被改变的对象上对我来说并不重要。在这种情况下,y = x
是最不符合 Python 风格的,因为它在这个上下文中是一个无意义的名称。对于像 numpy 这样需要速度的东西,类似这样的原地操作非常有意义。 - roganjosh