函数会累积后续调用时传递的参数

 

 默认值只计算一次。默认值为列表、字典或类实例等可变对象时,会产生与该规则不同的结果。例如,下面的函数会累积后续调用时传递的参数:

def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
print(f(3))

输出结果如下:

[1]
[1, 2]
[1, 2, 3]

不想在后续调用之间共享默认值时,应以如下方式编写函数:

def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L

 

4. 其他流程控制工具 — Python 3.11.3 文档 https://docs.python.org/zh-cn/3/tutorial/controlflow.html

 

 

 

 

 

posted @ 2023-05-11 07:03  papering  阅读(22)  评论(0编辑  收藏  举报