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

问题描述

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

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

我不明白的是,在删除指令之后,解释器仍如何能够找到相同的列表ll=[]中的文档仅应评估一次。

解决方法

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

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

,

要删除列表中的元素,应使用del l[:]。如果您仅使用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]
[]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...