Python 带有 del 语句的切片

Python slice with del statement

为什么会这样:

del a[:]

删除列表中的所有条目a?

据我了解,a[:] returns a 的副本。那么 del a[:] 不应该删除 a 的副本吗?

del 是一个特殊语句,它将检查原始值并使用给定的切片将其删除。
它在对象上调用 __delitem__ 并且对象本身处理删除。

如果您对幕后发生的操作感到好奇,欢迎您实施以下 class 并使用具有不同切片或关键引用的 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