Python(55)_默认参数的陷阱

#-*-coding:utf-8-*-
'''
函数复习
'''
def f():
    return 'bowen'
print(2+3) # 事实上python中会调用内部的函数,相当于add()
print(f())

def wahaha(*args):
    print(args)
wahaha(1,2,3)
l = [1,2,3]
wahaha(*l)

'''
默认参数的陷阱
  如果默认参数的值是一个可变数据类型,那么每一次调用的时候,不传值就公用这个数据类型的资源
  简单的说,就是不传值的情况下,始终操作的都是同一个字典或者列表
'''
def qqxing(l=[]):# 默认参数
    l.append(1)
    print(l)

qqxing()  # [1]
qqxing()  # [1, 1]
qqxing([]) # [1]
qqxing()  # [1, 1, 1] 用的是第二个调用时的列表


def ee(k,l={}):
    l[k] = 'v'
    print(l)

ee(1)  # {1: 'v'}
ee(2)  # {1: 'v', 2: 'v'}
ee(3)  # {1: 'v', 2: 'v', 3: 'v'}

原文地址:https://www.cnblogs.com/sunnybowen/p/10242058.html