函数的参数
在python中函数参数的定义方式有以下4中方式
1、位置参数
在我们在传参的时候,实参传递的顺序按照形参定义的顺序进行传递的传参方式。
def sum_num(num1,num2):
print(num1+num2)
sum_num(1,2)#1对应num,2对应num2.
2、关键字参数:
我们在传参的时候,以形参等于实参的形式忽略形参定义的顺序进行传参的传参方式。
def sum_num(num1,num2):
print(num1)
print(num2)
print(num1,num2)
sum_num(num2=10,num1=20)#不受位置影响。
位置参数关键字参数混合使用
def sum_num(num1,num2):
print(num1)
print(num2)
print(num1,num2)
sum_num(10, num1=20)#关键字参数在前,位置参数在后,能正常运行,
sum_num(num=10, 20)#否则报错
3、默认参数:
是在我们定义参数时候,我们给形参一个默认值,在我们调用函数的时候,如果不给有默认值的形参传参,会自动采用默认值。当某个值变化小的时候,我们就可以使用默认参数。
def save_userinfo(name,age,gender='男'):
print('姓名:{},年龄:{},性别:{}'.format(name,age,gender))
save_userinfo('张三',20)
save_userinfo('花',20,gender='女')
4、可变参数(*args, **kwargs):
如果函数中的参数过多,我们定义起来非常的麻烦,调用起来也非常的麻烦,因此python给我们提供了可变参数类型。能处理比当初声明时更多的参数,会将传入的参数变成元组(*args)或者字典(**kwargs)
格式
*变量名,可接受多个位置参数。
(1).元组参数 *args
def func(*args):
print(args)#(1,2,3,4,5,6)
print(args[0],args[1])#获取元组中的元素
func(1,2,3,4,5,6)
通过给形参前面添加*使参数变成一个元组,所有传递的参数变成元组的元素
args参数名称可以任意命名,但是一般我们叫他 args。
(2)具有打散序列的功能
tup=(1,2,3,4)
print(*tup)#1 2 3 4
lst=['a','b','c']
print(*lst)#a b c
s1='hello'
print(*s1)#h e l l o
将元组中的123分别给abc参数赋值
def func(a,b,c):
print(a,b,c)
tup=(1,2,3)
func(*tup)
(3)字典参数 **kwargs
接受多个关键字参数,变量名称可以任意,但是一般使用keargs,所有传递的参数变成字典的键值对,这里传参要求键等于值的形式。
**kwargs结果类型是字典,传递值是以key=value方式传入
def func(**kwarge):
print(kwarge)
print(kwarge['name'],kwarge['age'],kwarge['gender'])
func(name='张三',age=10,gender='男')
(4) 具有打散字典的功能**
def func(name,age):
print(name,age)
dic={'name': '张三', 'age': 10}
func(**dic)#等价于下边根据关键字取参数
func(name='张三',age=10)
(5)创建函数声明参数时的顺序:
位置参数、*args、默认参数、**kwargs
def func(a,*args,b=10,**kwargs):
print(a)
print(args)
print(b)
print(kwargs)
func('zs','ls',b='23',d=22,c=29)