def f(a,l=[]): print(a) l.append(a) return l f(1,[1]) print(f.__defaults__)和def f(a,l=[]): print(a) l.append(a) return l f(1) print(f.__defaults__)有什么区别?
时间: 2024-04-07 08:31:48 浏览: 85
Python入门教程:超详细1小时学会Python.docx
这两个函数的区别在于函数的默认参数。第一个函数的默认参数是 `[1]`,因此第一次调用函数时,会输出 `1`,并将 `[1]` 赋给参数 `l`。第二次调用函数时,由于 `l` 已经被赋值为 `[1]`,因此会将 `1` 添加到 `[1]` 中,返回值为 `[1, 1]`。第二个函数的默认参数是 `[]`,因此第一次调用函数时,会输出 `1`,并将一个空列表赋给参数 `l`。第二次调用函数时,由于 `l` 已经被赋值为上一次调用的返回值 `[1]`,因此会将 `1` 添加到 `[1]` 中,返回值为 `[1]`。所以,第一个函数会保留之前的结果,而第二个函数每次都会创建一个新的空列表。
阅读全文