4

为什么会这样:

del a[:]

删除列表中的所有条目a

据我了解,a[:]返回a. 所以不应该del a[:]删除的副本a

4

1 回答 1

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
于 2016-03-24T17:36:28.857 回答