函数的四种参数
顾名思义,必选参数就是函数调用时必须要有的参数,如下:
def test(x): for i in range(x): print(i) #调用test函数,参数为2 test(2) #以下是错误的调用 test()默认参数就是当函数没有参数时,使用默认值,当函数有参数时,使用函数传入值。
在定义时:参数名=参数值如下:
def test(name='猪猪侠'): print(name) test('叮当猫') #叮当猫 test() #猪猪侠但是在传入默认参数时需要注意一点:
def test(name=[]): name.append('hh') print(name) test() #['hh'] test() #['hh', 'hh'] test() #['hh', 'hh', 'hh']我们可以注意到,在test被多次调用时默认参数会被一直改变。 所以要注意在设置默认参数是,要确保默认参数必须指向不变对象。
可变参数说的是参数的个数可以变,可以是0个也可以是多个。
在定义时:*参数名参数接收时会把接受的数据转化为list或tuplu。如下:
def test(*num): print(num) n=[1,2,3] #前面加上*就可以把list或者tuple传入 test(*n) #(1, 2, 3) test(1,2,3) #(1, 2, 3) test() #()可变参数允许传入0个参数,传入参数以关键值对的形式传入,会被在内部组装为dict。
在定义时:**参数名参数接收时会把接受的数据转化为dict。使用顺序:
必选参数默认参数可变参数关键字参数如图:
def func(a,b,c=0,*args,**kw): print(a,b,c,args,kw) func(1,2) #1 2 0 () {} func(1,2,3) #1 2 3 () {} func(1,2,3,args=[],kw={}) #1 2 3 () {'args': [], 'kw': {}} func(1,2,3,'a','b') #1 2 3 ('a', 'b') {} func(1,2,3,'a','b',x='9') #1 2 3 ('a', 'b') {'x': '9'} func(*args,**kw) #1 2 3 (4,) {'x': 10}可以看到对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。