01 看代码写结果 函数参数使用可变数据 有什么陷阱

面试题:
  • def func(a,b=[]) 有什么陷阱?

    因为b是可变类型,如果不传递参数时,默认使用的同一个内存地址

  • 看代码写结果

    def func(a,b=[]):
        b.append(a)
        return b
    
    l1 = func(1)
    l2 = func(2,[11,22])  #先打印:[11,22] ,在打印2
    l3 = func(3)
    
    # [1,3]   [11,22,2]   [1,3]
    print(l1,l2,l3)
    
  • 看代码写结果

    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]
    
posted @ 2024-09-26 06:31  jhchena  阅读(3)  评论(0编辑  收藏  举报