文章目录
函数的参数
在python中函数参数的定义方式有一下4中方式。
1)位置参数
2)关键字参数:
3)默认参数:
4)可变参数(*args,**kwargs):
1.位置参数
在我们在传参的时候,实参传递的顺序按照形参定义的顺序进行传递的传参方式。
def sum_num(num1, num2):
print(num1, num2)
sum_num(1, 20) # 1 20
sum_num(20, 1) # 20 1
2.关键字参数
我们在传参的时候,以形参等于实参的形式忽略形参定义的顺序进行传参的传参方式。
def sum_num(num1, num2):
print(num1, num2)
sum_num(num1=1, num2=20) # 1 20
sum_num(num1=20, num2=1) # 20 1
**关键字参数和位置参数同时使用:
关键字参数必须在位置参数后面定义。
**
def sum_num(num1, num2):
print(num1, num2) # 10 20
print(num1 + num2) # 30
sum_num(10, num2=20) # 位置参数在前,关键字参数在后,程序能正常运行
# sum_num(num1=10, 20) # 关键字参数在前,位置参数在后,程序报错
3.默认参数
定义参数时,给形参一个默认值,在我们调用函数的时候,如果不给有默认值的形参传参,会自动采用默认值。
当某个值变化小的时候,我们就可以使用默认参数。
def save_info(name, age, gender='男'):
print(name, age, gender)
save_info('李嘉豪', 21) # 李嘉豪 21 男
注意:函数定义的时候,默认参数、位置参数同时使用的时候,默认参数必须放在位置参数的后面
4.可变参数
如果函数中的参数过多,我们定义起来非常的麻烦,调用起来也非常的麻烦,因此python给我们提供了可变参数类型。能处理比当初声明时更多的参数,会将传入的参数变成元组(*args)或者字典(**kwargs)
1、元组参数 *args
通过给形参前面添加*使参数变成一个元组,所有传递的参数变成元组的元素
注意: args参数名称可以任意命名,但是一般我们叫他 args。
def func(*args):
print(args)
func(1, 2, 3, 4, 45, 5, 6, 7, 7) # (1, 2, 3, 4, 45, 5, 6, 7, 7)
* 具有打散序列的功能
tup = (1, 2, 3, 4)
print(tup) # (1, 2, 3, 4)
print(*tup) # 1 2 3 4
lst = ['a', 'b', 'c']
print(lst) # ['a', 'b', 'c']
print(*lst) # a b c
s1 = 'hello'
print(*s1) # h e l l o
def func(a, b, c):
print(a, b, c)
tup = (1, 2, 3)
num1 = tup[0]
num2 = tup[1]
num3 = tup[2]
func(num1, num2, num3)
func(tup[0], tup[1], tup[2])
func(*tup) # 通过打散功能传递位置参数
2、字典参数 **kwargs
通过给形参前面添加**使参数变成一个字典,所有传递的参数变成字典的键值对,这里传参要求键等于值的形式。
**kwargs结果类型是字典,传递值是以key=value方式传入
def func(**kwargs):
print(kwargs) # {'name': 'zs', 'age': 10, 'gender': '男'}
print(kwargs['name'], kwargs['age'], kwargs['gender']) # zs 10 男
func(name='zs', age=10, gender='男')
** 具有打散字典的功能
def func(name, age):
print(name, age)
dic = {'name': 'zs', 'age': '10'}
func(**dic) # zs 10
注意事项:**kwargs必须放在*args后面。
5、参数顺序
函数参数总结:
定义函数时参数的顺序: 位置参数,元组参数,默认参数,字典参数。
def func(a, *args, b=10, **kwargs): # !!!!位置参数要在前面
print(a)
print(args)
print(b)
print(kwargs)
func('zs', 'ww', b=20, c=30, d=40)