我刚刚发现在 Python 字典和集合中都有一个 clear 方法。该方法实际上只是从对象中删除所有条目。
是否有充分的理由或什至是调用 foo.clear() 而不是 foo = {} 或 foo 有意义=设置()?
我可以想象它可能更有效地进行垃圾收集,但它似乎违反了“应该有一种——最好只有一种——显而易见的方法来做到这一点。”
请您参考如下方法:
当您对同一个集合对象有多个引用时,只有 clear() 可以清空集合而无需重新分配。
比较:
>>> def clear(s):
... s.clear()
...
>>> def clear_assignment(s):
... s = set()
...
>>> foo = {'bar', 'baz'}
>>> clear_assignment(foo)
>>> foo
{'baz', 'bar'}
>>> clear(foo)
>>> foo
set()
赋值将 one 名称重新绑定(bind)到新的 set() 对象,而 set.clear() 会从可变对象中删除所有内容,而无需重新-赋值,因此您可以继续使用对该集合的其他引用。
