函数的参数
一、函数参数的两大类
形式参数:
函数定义阶段括号内所填写的参数叫做形式参数,简称为‘形参’
形参的表现形式只有一种变量名
实际参数:
函数调用阶段括号内所填写的参数叫做实际参数,简称为‘实参’
实参的表现形式有多种方式,核心就是数据值
形式参数与实际参数的关系:
两者在函数调用时将实际参数临时绑定给形式参数,在调用结束后解除绑定。

二、位置参数与关键实参
位置参数又分为位置形参和位置实参
位置形参:
在函数定义过程中,按照从左到右的顺序依次填入的变量名
位置实参:
在函数调用过程中,按照从左到右的顺序依次填入的数据值
ps: 在函数定义与调用的过程中,位置参数按照位置一一对应绑定,多一个不行少一个也不行
关键实参:
在函数调用过程中,使用 key=value的形式为指定的参数值,可以打破顺序的限制。
ps:可以混用位置实参与关键字实参,但必须位置实参在关键字实参前面
'格式越简单的越往前,格式越复杂的越靠后'

三、默认参数
默认参数的定义:
在函数定义阶段就可以给形参赋值了成为默认参数
如果在调用阶段不输入数据值,那么便使用默认形参,如果输入数据值,便会使用输入的数据值
PS:
在函数定义时位置形参必须放在默认形参前面,否则语法会报错
‘格式越简单的越往前,格式越复杂的越靠后’
默认参数的值在函数定义阶段赋值的时候就已经固定死了,后面再换也不会改变了
四、可变长参数
可变长参数指的是在函数调用过程中,可以传入的参数数量不固定,而传入的参数无非为位置实参和关键字实参,
所以在形参中分别用*对应位置实参,**对应关键字实参
1.函数无论传入多少位置参数都可以运行
def func(a, b, *c):
print(a,b,c)
func(1,2,3,4,5,6) # 1 2 (3, 4, 5, 6)
*号用于接收多余的位置参数,并组织成元组的形式赋值给后面的变量名
2.函数无论传入多少关键字参数都可以运行
def func(a,b,**c):
print(a,b,c)
func(a = 1, b = 2, c = 3, d = 4, e = 5, f = 6) # 1 2 {'c' : 3, 'd' : 4, 'e' : 5, 'f' : 6}
**号用于接收多余的关键字参数,并组织成字典的形式赋值给后面的变量名
3.函数无论传入多少位置参数和关键字参数都可以运行
def func(*a, **b)
print(a,b)
func(1, 2, 3, a = 4, b = 5 , c = 6) # (1, 2, 3) {'a' : 4, 'b' : 5, 'c' :6}
ps:在传入参数时必须遵守位置参数必须写在关键字参数之前的原则
*号后面的变量名推荐写args
**号后面的变量名推荐些kwargs
4.*号在实参中的使用
def func(*a)
print(a)
new_list = [1,2,3,4,5,6,7,8,9]
func(*new_list) # (1,2,3,4,5,6,7,8,9)
*号在实参中会将列表或者元组中的元素打散,一一传值给函数变量名
5.**号在实参中的使用
def func(**a)
print(a)
new_dict ={'name' :'mike', 'age' = 25}
func(**new_dict} # {'name' : 'mike', 'age' =25}
**号在实参中会将字典的键值对打散成关键字参数的形式一一传入


浙公网安备 33010602011771号