为什么会这样:
del a[:]
删除列表中的所有条目a
?
据我了解,a[:]
返回a
. 所以不应该del a[:]
删除的副本a
?
del
是一个特殊的语句,它将检查原始值并使用给定的切片将其删除。
它调用__delitem__
对象,对象本身处理删除。
如果您对幕后发生的操作感到好奇,欢迎您实现以下类并将del
语句与不同的切片或键引用一起使用:
class A:
def __delitem__(self, key):
print(key)
解释器中的测试:
>>> a = A()
>>> del a[:]
slice(None, None, None)
>>> del a[2]
2
>>> del a["test"]
test