为什么 b 会成为全球性的?这是函数参数。
def f(a, b=[]):
b.append(a)
return b
print(f(1))
print(f(2))
print(f(3))
[1]
[1, 2]
[1, 2, 3]
def f(a):
b = []
b.append(a)
return b
print(f(1))
print(f(2))
print(f(3))
[1]
[2]
[3]
为什么 b 会成为全球性的?这是函数参数。
def f(a, b=[]):
b.append(a)
return b
print(f(1))
print(f(2))
print(f(3))
[1]
[1, 2]
[1, 2, 3]
def f(a):
b = []
b.append(a)
return b
print(f(1))
print(f(2))
print(f(3))
[1]
[2]
[3]
在第一个示例中,函数 f 有一个默认参数 b,它最初是一个空列表。当您调用函数 f 而不指定 b 值时,此列表将在函数调用之间保存,因为它是可变对象并用作默认值。因此,对 b 的更改(例如添加新元素)会在函数调用之间保留,并且您会看到累积的结果。第二个示例没有 b 的默认值,每次调用该函数时,都会创建一个新的 b 列表。