核心的原因是: 函数默认值在函数定义时就产生了,不是每次调用时才产生,每次调用使用了同一个变量。
In [30]: def test(a=1, b=[]):
...: a += 3
...: b.append(1)
...: print(a,b)
...:
In [31]: test.__defaults__
Out[31]: (1, [])
In [32]: test()
4 [1]
In [33]: test.__defaults__
Out[33]: (1, [1])
In [34]: test()
4 [1, 1]
In [35]: test.__defaults__
Out[35]: (1, [1, 1])
【 在 iwannabe 的大作中提到: 】
: #!/usr/bin/env python3
: def foo(x: int, d: dict = {}) -> dict:
: if x == 0:
: ...................
--
修改:stockbsd FROM 120.229.48.*
FROM 120.229.48.*