__del__(),而是每当遇到 del x, Python 会将 x 的引用数减 1, 当 x 的引用数减到 0 时就会调用 x.__del__()。...调用 globals 导致引用被销毁, 因此我们可以看到 "Deleted!" 终于被输出了,这其实是 Python 交互解释器的特性, 它会自动让 _ 保存上一个表达式输出的值。...在迭代时修改对象是一个很愚蠢的主意,正确的做法是迭代对象的副本, list_3[:] 就相当于完整的复制了 list_3,因此可以全部删除。
那么为什么输出是 [2, 4]?...当我们明确的将 [] 作为参数传递给 some_func 的时候, 就不会使用 default_arg 的默认值, 所以函数会返回我们所期望的结果,可以运行以下代码进行验证。...__defaults__
(['some_string', 'some_string'],)
避免可变参数导致的错误的常见做法是将 None 指定为参数的默认值,然后检查是否有值传给对应的参数:
def