函数形参

函数形参

函数形参的定义方式:

位置形参
星号元组形参
命名关键字形参
双星字典形参
  • 位置形参:
    • 语法:
def 函数名(形参名1,形参名2...):
    语句块

自己理解:按照位置顺序依次一对一接收的形参
* 星号元组形参
* 语法:

def 函数名(*元组形参名):
    语句块
* 作用:收集多余的位置传参
* 说明:元组形参名一般命名为 'args'
* 自己理解:位置形参传递完后,将多余的位置形参打包形成元组传递给星号元组形参,元组形参名这个变量绑定的就是打包后的元组

示意:

def mysum(a, b, *args):
    pass
mysum(1, 2, 3, 4, 5, 6)
# 按位置把实参 1,2 传递给a和b ,剩下的3,4,5,6打包成一个元组(3,4,5,6)传递给*args 也就是 元组变量args 绑定了元组(3,4,5,6),就可以直接在函数调用中使用了。
mysum(1,2)
# 位置实参正好够用,没有多余位置实参,则args=空元组,采用len(args)判断
mysun(*[1,2])
# 在函数调用时采用星号,相当于将可迭代对象拆解成一个个元组,中间用逗号隔开而已,此处即是将列表拆开成1,2 然后按位置传递给a,b 即可
  • 命名关键字形参:
    • 语法:
def 函数名(*, 命名关键字形参):
    语句块
def 函数名(*args, 命名关键字形参):
    语句块
* 作用:强制所有的参数都必须使用关键字传参或 字典关键字传参
* 注: * 分隔符, * 后边的形参必须使用关键字传参
*  *args 后边的形参必须使用关键字传参

* 双星字典形参:
* 语法:

def 函数名(**字典形参名):
    语句块
* 作用:收集多余的关键字传参
* 说明:字典形参名一般命名为 kwargs
* 自己理解:函数调用处:** 将字典拆解成关键字实参,可以进行参数传递
* 自己理解: 函数定义处:** 将接收的多余的的关键字打包形成字典

示例:

def fun2(a, b, *args, c, d):
    pass
# *args 后边的形参c,d都必须是关键字形参
fun2(1, 2, 10, 11, 12, d=3, c=4)
fun2(1, 2, **{'c': 3, 'd': 4})  # **拆解字典进行关键字传参

** 函数参数说明:
位置形参,缺省参数,星号元组形参,双星号字典形参等可以混合使用

函数参数自左至右的顺序为:
    1. 位置形参
    2. 星号元组形参
    3. 命名关键字形参
    4. 双星号字典形参

示例:

def fn(a,b,*args, c, **kwargs):
    pass
fn(100, 200, 3, 4, 5, d='D', e='E',c='C')
# 100--> a   200-->b    (3,4,5)-->agrs
# 'C'-->c    {'d':'D', 'e':'E'}-->kwargs
  • 缺省参数: 给定参数默认值 内部给定默认实参 函数定义时一次性给定

猜你喜欢

转载自blog.csdn.net/fayzoro/article/details/82119416