在 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]
[]
我在控制台中尝试了以下操作:
>>> 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]
[]