带有del语句的Python切片

时间:2016-03-24 17:30:20

标签: python slice del

为什么这样:

del a[:]

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

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

1 个答案:

答案 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