# coding:utf-8
# author:我本善良
# create_time:2021/5/26 20:45
'''
函数的传参:
1、必传参数
函数中定义的参数没有默认值,在调用函数时如果不传入则报错
def add():
return a+b
result = add(1,3)
print(result)
注:在定义函数的时候,没有默认值且必须在函数执行的时候,转递进去的参数,且顺序与参数顺序相同,就是必传参数
2、默认参数
在定义函数的时候,定义的参数含有默认值,通过赋值语句给他是一个默认值
示例:
def add(a,b=1):
参数名、赋值符号,默认值
注:
如果默认参数在调用函数的时候,给予了新的值,函数将优先使用后传入的值进行工作
3、不确定参数-可边参数
没有固定的参数名和数量(不知道要传的参数名具体是什么)
示例:
def add(*args,**kwargs):
add(1,2,3,name='dewei',age=33)
对应*args,对应**kwargs
*args代表:将无参数的值,合并成元组
**kwargs: 赋值语句形式,给予参数
test_args_super(a,b)
# 对应*args和**kwages
#test_args_super(*a,**b)
4、参数规则
def add(a,b=1,*args,**kwargs):
a:必传参数
b: 默认参数
*args: 可变元组参数
**kwargs:可变字典参数
注:
参数的定义从左到右,依次必须是必传参数,默认参数,可变元组参数?,可变字典参数
函数的参数传递非常灵活
必传参数与默认参数的传参多样化
'''
def add(a,b,c=3):
return a + b + c
result = add(1,2)
print(result)
result = add(1,2,6)
print(result)
def test_args(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
test_args(1,2,3,4,5,6,7,name='Tom',age=33,top=178)
# 元组 字典
def test_args_super(*args,**kwargs):
if len(args)>=1:
print(args[0])
if 'name' in kwargs:
print(kwargs['name'])
else:
print('Not name')
print(args,len(args))
print(kwargs,len(kwargs))
test_args_super(1,name='Tom')
a = ('python','django')
b = {'name':'dewei'}
test_args_super(a,b)
# 对应*args和**kwages
test_args_super(*a,**b)
def sum(a,b=1):
print(a + b)
#按照顺序传入
sum(1,2)
#传必填参数,不传默认参数
sum(1)
#赋值方式传入
sum(a=1,b=3)
#赋值语句方式传入,不过,打乱顺序
sum(b=2,a=1)
#sum(b=2) #会报错
def test(a,b=1,*args):
print(a,b,args)
s = (1,2)
test(1,2)
test(1,2,*s)
#test(a=1,b=2,*s) #报错,需将可变参数放在第一位,后面紧跟必传参数,默认参数
test(*s)
def test2(*args,a,b=1): #定义时候:,需将可变参数放在第一位,后面紧跟必传参数,默认参数
print(a,b,args)
test2(1,2,3,4,5,a=1)
test2(a=1,b=2,*s)
def test3(a=1,b=2,**kwargs):
print(a,b,kwargs)
test3(1,2,name='Tom')
test3(a=1,b=2,name='dewei')
test3(name='dewei',age=19,a=1,b=3)
d = {'name':'小慧'}
test3(a=1,b=2,**d)
test3(**d,a=1,b=2)
python-函数的传参
最新推荐文章于 2021-12-06 19:56:14 发布