流畅的python_不要使用可变类型作为参数默认值

可变参数作为对象的默认值的时候
创建不同的对象(均为默认值)的时候,默认值会具有相同的引用

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

print(f())
print(f())
print(f())

# 输出
# [1]
# [1, 1]
# [1, 1, 1]

正确的写法应将默认值设为None,检查参数后再进行赋值

def f(a = None):
    if a is None:
        a = []
    else:
        a = list(a)
    a.append(1)
    return a
posted @ 2022-11-08 13:13  meizhengchao  阅读(11)  评论(0编辑  收藏  举报