结论一:函数调用传列表,使用传递的列表;函数调用未传递列表,使用默认列表。
即有新用新,无新用旧
无新用旧
def f(x, li1=[100,]):
for i in range(x):
li1.append(i * i)
return li1
print(f(5))
//[100, 0, 1, 4, 9, 16]
有新用新
def f(x, li1=[100,]):
for i in range(x):
li1.append(i * i)
return li1
li2=[]
print(f(5,li2))
//[0, 1, 4, 9, 16]
结论二:若始终不传递新列表,则一直使用形参列表
def f(x, li=[100,]):
print(id(li))
for i in range(x):
li.append(i)
return li
print('---1---')
print(f(4))
print('---2---')
print(f(5, []))
print('---3---')
print(f(6))
---1---
1781769265800
[100, 0, 1, 2, 3]
---2---
1781771249800
[0, 1, 2, 3, 4]
---3---
1781769265800
[100, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5]