实参
实参传递方式argument
位置传参
定义:实参与形参的位置依次对应。
序列传参
定义:实参用*将序列拆解后与形参的位置依次对应。
关键字传参
定义:实参根据形参的名字进行对应。
字典关键字传参
-
定义:实参用**将字典拆解后与形参的名字进行对应。
-
作用:配合形参的缺省参数,可以使调用者随意传参。
def fun01(a, b, c): print(a) print(b) print(c) # 1. 位置实参:实参根据位置与形参进行对应 # positional argument fun01(1, 2, 3) # 2. 序列实参:使用星号将序列中的元素拆开,与形参进行对应. # 序列:字符串 列表 元组 list01 = ["aaa", "bb", "cc"] fun01(*list01) # 3. 关键字实参:实参根据名称与形参进行对应 # 备注:作用明天讲。 fun01(b=2, a=1, c=3) # 4. 字典实参:使用双星号将字典中的元素拆开,根据键形参进行对应,传递值.. dict01 = {"c": 33, "a": 11, "b": 22} fun01(**dict01)
形参
形参定义方式parameter
缺省参数
-
语法:
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, ...):
函数体
-
说明:
缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
缺省参数可以有0个或多个,甚至全部都有缺省参数。
位置形参
语法:
def 函数名(形参名1, 形参名2, ...):
函数体
星号元组形参
-
语法:
def 函数名(*元组形参名):
函数体
-
作用:
收集多余的位置传参。
-
说明:
一般命名为'args'
形参列表中最多只能有一个
命名关键字形参
-
语法:
def 函数名(*, 命名关键字形参1, 命名关键字形参2, ...):
函数体
def 函数名(*args, 命名关键字形参1, 命名关键字形参2, ...):
函数体
-
作用:
强制实参使用关键字传参
双星号字典形参
-
语法:
def 函数名(**字典形参名):
函数体
-
作用:
收集多余的关键字传参
-
说明:
一般命名为'kwargs'
形参列表中最多只能有一个
参数自左至右的顺序
位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参
# 1. 默认形参:实参可以不传递数据(从右向左依次存在) def fun01(a=0, b="bb", c=1.5): print(a) print(b) print(c) # fun01() fun01(1, "b") # 关键实参 + 默认形参:调用者可以随意指定参数进行传递 fun01(b="bbbbb") # 2. 星号元组形参:让位置实参的数量无限 def fun02(p1, p2, *args): print(args) fun02(1, 2) fun02(1, 2, 3) fun02(1, 2, 3, 4, 5) # 3. 命名关键字形参:传递的实参必须是关键字实参。 # 写法1:星号元组形参以后的参数是命名关键字形参 # p1 p2 def fun03(*args, p1="", p2): print(args) print(p1) print(p2) fun03(2, 2, p1=111, p2=222) fun03(p1=111, p2=222) fun03(p2=222) # 案例: # def print(*args, sep=' ', end=' ', file=None): # 1---fff---3.5---4---55---6---67 ok print(1, "fff", 3.5, 4, 55, 6, 67, sep="---", end=" ") print("ok") # 写法2:星号以后的位置形参是命名关键字形参 def fun04(*, p1=0, p2): print(p1, p2) fun04(p1=1, p2=2) fun04(p2=2) # 4. 双星号字典形参:让关键字实参的数量无限 def fun05(**kwargs): print(kwargs) fun05(a=1) # {'a': 1} fun05(a=1, b=2) fun05(a=1, b=2, qtx=3) # {'a': 1, 'b': 2, 'qtx': 3}