函数参数的分类
1.形参
在函数定义阶段括号内所填写的参数
eg def func(a,b):
pass
2.实参
在函数调用阶段括号内传入的参数
func(1,2):
位置参数与关键字参数
1.位置参数
按照从左往右的顺序依次填入的参数
1.1位置形参
在函数定义阶段括号内按照从左往右的顺序依次填入的变量名
1,2位置实参
在函数调用阶段括号内按照从左往右的顺序依次传入的数据值
eg def func(a,b):
"""发出笑声"""
print('hahahahaha')
func(1,2)
2.关键字参数
在函数调用阶段通过形参名=数据值的形式指名道姓的传值
eg def func(a,b):
"""鼓励语"""
print("每天都要打起精神")
func(a=1,b=2)
ps:1.位置形参与位置实参在函数调用阶段 按照位置一一对应绑定
2.位置参数在绑定的时候多一个不行少一个也不行
默认参数
1.默认形参
函数在定义阶段就可以给形参赋值了
2.注意
2.1该形参在函数调用阶段如果不给值 则使用默认的
eg def func(name, age, hobby='read'):
pass
print('%s:%s:%s' % (name, age, hobby))
func('jason',18)
ps:位置形参与默认值形参在定义的时候 位置形参必须在默认值形参的前面
可变长参数
1.*在形参中是用于接受多余的位置参数 并组织成元组的形式赋值给*后面的变量名
eg def func(a,b,*c):
print(a,b,c)
func(1,2,3,4,5,6)
2. **在形参中用于接受多余的关键字参数 并组织成字典的形式赋值给**后面的变量名
eg def func(a,b,**c):
print(a,b,c)
func(a=1,b=2,c=3,d=4,e=5)
ps:在pyhthon中墨守成规可变长参*和**的后面变量名其实是可以随便定义的
推荐使用
*args
**kwargs
def index(*args,**kwargs):
pass