自定义函数中的默认参数如果是一个实际值,那他并不会在调用时改变
def n(i,b=2):
print(b)
b+=i
print(b)
for i in range(2):
n(i)
输出是:
2
2
2
3
可以看到在对默认参数进行变化的操作后,下一次调用函数时,默认参数的值始终没有变。但是如果是列表,字典等可进行操作的实例,他的值是会发生积累的。
def m(a,list1=[]):
print(list1)
list1.append(a)
for i in range(4):
m(i)
按理来说第一次和第二次调用之间没有联系,在调用后list1应该刷新为【】,但现实是:
[]
[0]
[0, 1]
[0, 1, 2]
所以,如果想要不断刷新,就要把list1=【】放在函数操作的第一行:
def m(a):
list1=[]
print(list1)
list1.append(a)