一下代码
def func(ls = []):
ls.append(1)
return ls
a = func()
b = func()
print(a,b)
这个程序的运行结果为什么是[1,1] [1,1]
一下代码
def func(ls = []):
ls.append(1)
return ls
a = func()
b = func()
print(a,b)
这个程序的运行结果为什么是[1,1] [1,1]
Python函数在定义的时候,默认参数 ls的值就被计算出来了,即[],因为默认参数 ls 也是一个变量,它指向对象[],每
次调用该函数,如果改变了 ls的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。
所以,定义默认参数要牢记一点:默认参数必须指向不变对象!
以上内容来自:廖雪峰python教程,有帮助麻烦点个采纳【本回答右上角】,谢谢~~
可以用 None 这个不变对象来实现:
def func(ls = None):
if ls==None:
ls=[]
ls.append(1)
return ls
a = func()
b = func()
print(a,b)