形式参数(形参)
在界定涵数环节界定的主要参数称作形参,等同于用户标识符
位置形参(一般形参)
位置形参:在函数定义环节,依照从左往右的次序界定
特性:务必被传值,且实参与形参依照次序一一对应,多一个少一个都不好!
def func(): pass
默认设置形参
默认设置形参:在函数定义环节,就早已被取值的主要参数
def func(x, y=1): pass
一般搜集形参
一般搜集形参:用以接受空出一部分的位置实参,外溢的一部分会被储存成元组种类,随后取值给后边的形参接受
def func(x, y, *args): print(x, y) print(args) func(1, 2, 3, 4, 5, 6, 7, 78, 8, 89)
*后的形参名一般界定为
args
,为约定成俗
关键字搜集形参
关键字搜集形参:用以接受空出一部分的关键字实参,外溢的一部分会被**储存成词典种类,随后取值给**后边的形参接受
def func(x, y, **kwargs): print(x, y) print(kwargs) func(a=1, b=2, c=3, x=4, y=5, z=6)
**后的形参名一般界定为
kwargs
,为约定成俗
取名关键字形参
取名关键字形参:在函数定义时,*后界定的主要参数,便是取名关键字主要参数
特性:取名关键字实参务必依照key=value
的方式为其传参
# y=2是含有初始值的取名关键字形参,并不是是默认设置形参,因此 能够置放在z的前边 def func(x, *, y=2, z): print(x) # 在其中y和z便是取名关键字形参 print(y, z) func(1, z=3)
具体主要参数(实参)
在调用函数环节界定的主要参数称作实参,等同于变量类型
位置实参(一般实参)
位置实参:在调用函数环节,依照从左往右的次序先后传到的值
特性:实参与形参依照次序一一对应
def func(x, y): print(x y) func(1, 2)
关键字实参
关键字实参:在调用函数环节,依照key=value
的方式传到的值
特性:特定给实际的某一形参传值,可以不依照次序传值
def func(x, y): print(x y) func(y=1, x=2) func(x=2, y=1)
*和**的应用
-
*和**在函数定义处应用
- *:把不必要的一般实参装包成元组
- **:把不必要的关键字实参装包成词典
-
*和**在调用函数处应用
- *:对元组或目录开展解压工具
- **:对词典开展解压工具
-
*和**另外在函数定义处和启用处应用
- 先解压工具变为位置形参
- 再将不必要的位置形参装包
# 实例一 def func(x, y, z): print(x, y, z) func(*[1, 2, 3]) func(*(1, 2, 3)) func(**{"x": 1, "y": 2, "z": 3}) # 案例二 def func(x, y, z, *args): print(x, y, z) print(args) func(5, 6, 7, *[1, 2, 3])
形参与实参的关联
- 在启用环节,实参会关联给形参
- 这类关联关联只有在涵数身体应用
- 实参与形参的关联关联只在调用函数时起效,调用函数完毕后消除关联关联
汇总
- 位置实参与关键字实参混和应用时,位置实参务必放到关键字实参前边(英语的语法要求)
- 位置形参与默认设置形参混和应用时,位置形参务必在默认设置形参的左侧
- 不可以为同一形参反复传值
- 默认设置形参相匹配的实参可传并不传
-
*args
与**kwargs
混和应用时,*args
务必写在**kwargs
的前边,不然会报拼写错误