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

Posted sunnybowen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\'}

 

以上是关于Python(55)_默认参数的陷阱的主要内容,如果未能解决你的问题,请参考以下文章

python默认参数陷阱

默认参数的陷阱自我心得

[python] 之 函数陷阱

十条Python面试题陷阱,看看你是否会中招

Python_复习_33

默认参数的陷阱