由于我是python的新手,我已经开始了默认参数的主题 根据定义,我已经理解默认参数只被评估一次,并且在函数定义时,但是这个代码片段产生了混淆
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
在上面的代码中L是一个变量 修改为在第一个函数调用上列出 实例F(1) 但即使是第二次调用函数时,L也会被修改为列表 ex .. f(1) F(2) 结果在[1] [2] 您能否真正准确地解释上述代码评估是如何完成的?
答案 0 :(得分:1)
每次在没有第二个参数的情况下调用f
时,都会创建一个新列表。如果要重用列表,则需要存储f
new_list = f(1)
f(2, new_list)
print(new_list)
将输出[1,2]
答案 1 :(得分:0)
您可以阅读此内容,以便更好地理解传递https://www.python-course.eu/passing_arguments.php
的python参数长话短说 - 你不能覆盖参数的值,你只能创建指向新列表的局部变量L
,它会影响参数L
。但是,在函数参数L
的下一次调用仍然是None
时,除非它将被传递