在 Python 中删除函数内部的默认参数

Deleting an default argument inside function in Python

我在控制台中尝试了以下操作:

>>> def f(l=[]):
...     l.append(1)
...     print(l)
...     del l
... 
>>> f()
[1]
>>> f()
[1, 1]

我不明白的是解释器如何在删除指令后仍然能够找到相同的列表l。 根据文档 l=[] 应该只评估一次。

变量不是对象。每次调用该函数时,都会创建局部变量 l 并(如有必要)将其设置为默认值。

对象 []l 的默认值,是在定义函数时创建的,但变量 l 是在每次函数运行时创建的。

要删除列表的元素,del l[:] 应该是 used.If 你只使用 l 列表将保留它本身。

def f(l=[]):
l.append(1)
print(l)
del l[:]
print(l)
>>> f()
[1]    #element in the list
[]     #list after deletion of the element
>>> f()
[1]
[]
>>> f()
[1]
[]