2024-06-16 11:40:39 发布
网友
在以下代码中:
L = [1,2,3] addr1 = id(L) L = L + [4,5] addr2 = id(L) L = [1,2,3] addr3 = id(L) L += [4,5] addr4 = id(L) print addr1 == addr2 print addr3 == addr4
答案是False,True,但为什么呢?你知道吗
False
True
我以为L += [4,5]只是L = L +[4,5]的缩写。你知道吗
L += [4,5]
L = L +[4,5]
当x是一个列表时,x += y并不完全等同于x = x + y。当它是一个列表时,+=对列表执行就地修改,而不是使用串联创建一个新列表。但是+总是创建一个新列表。你知道吗
x
x += y
x = x + y
+=
+
对象可以实现__iadd__特殊方法,这意味着“就地添加”。你知道吗
__iadd__
列表实现了这一点。你知道吗
您可以对自己的对象执行此操作,并选择返回原始对象或新对象。你知道吗
当
x
是一个列表时,x += y
并不完全等同于x = x + y
。当它是一个列表时,+=
对列表执行就地修改,而不是使用串联创建一个新列表。但是+
总是创建一个新列表。你知道吗对象可以实现
__iadd__
特殊方法,这意味着“就地添加”。你知道吗列表实现了这一点。你知道吗
您可以对自己的对象执行此操作,并选择返回原始对象或新对象。你知道吗
相关问题 更多 >
编程相关推荐