Python中:def func(a,b=[]) 这种写法有什么坑?


def func(a,b=[]) 有什么陷阱?

def func(a,b=[]):

b.append(a)
return b

l1 = func(1)
l2 = func(2,[11,22])
l3 = func(3)


print(l1,l2,l3)
#执行结果: [1,3]   [11,22,2]   [1,3]
 

函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第三次执行还是用第一次执行的时候实例化的地址存储,所以第一和第三次执行的结果就是相同的,想每次执行只输出当前传入参数 ,默认参数应该设置为None。

下面这种情况:

def func(a,b=[]):
  b.append(a)
  print(b)

func(1)
func(2,[11,22,33])
func(3)

#执行结果: [1] [11,22,33,2] [1,3] ###此时每个func函数是立即打印所以会出现不同结果


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM