Python中有一个函数:
def to_list(val, default_list=[]):
default_list.append(val)
return default_list
我有点困惑,因为
print(to_list('a'))
print(to_list('v'))
相应地返回:
['a']
['a', 'v']
为什么列表default_list中包含上次调用保存的内容(包含'a')?毕竟,函数的作用域在其执行后被清除。在default_list第一次调用之后,这个范围的一部分应该已经被清除了。不是?他为什么活下来?
谢谢。
因为列表在 python 中是一件非常棘手的事情,你必须小心它。
这就是它按预期工作的方式:
将打印:
在函数声明中,您不能像这样声明列表:
因为 您将保留列表的链接,每次调用此函数时,您不会创建新列表,而只会连接到现有链接。您可以在此处阅读更多内容: