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
为什么会这样:
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