有人详细解答一下这道为什么选D吗

img


这个是真的不懂啊,查了很多都没有过程解答,有人详细解答一下吗,真诚感谢

调用a = func()时没有加参数,使用默认值,但函数的默认值只会初始化1次;调用b = func()时ls使用上一次的list
可以用id()函数查看地址

可以用一个更直观的例子来说明

def func(ls=[]):
    # 函数的默认值只会初始化1print(id(ls))
    ls.append(1)
    return ls


if __name__ == '__main__':
    a = func()
    b = func()
    c = func([3])
    d = func()

    print(a, b, c, d)

img