为什么这样:
del a[:]
删除列表a
中的所有条目?
据我了解,a[:]
会返回a
的副本。所以不应del a[:]
删除a
的副本?
答案 0 :(得分:4)
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