【发布时间】:2020-08-19 12:38:01
【问题描述】:
我在控制台中尝试了以下操作:
>>> def f(l=[]):
... l.append(1)
... print(l)
... del l
...
>>> f()
[1]
>>> f()
[1, 1]
我不明白的是解释器如何在删除指令之后仍然能够找到相同的列表l。
从文档中l=[] 应该只评估一次。
【问题讨论】:
-
每次调用函数时,都会创建局部变量
l并将其设置为默认参数的值。默认参数的值是在函数定义时创建的,但变量l是在每次函数运行时创建的。 -
del的局部变量,就在函数的末尾,永远不会产生任何影响。无论如何,这正是变量将要发生的事情。
标签: python python-3.x function del