python3不定长参数

1、介绍

python的函数和方法中,都允许不定长参数的声明和使用。

2、使用

不定长参数的三种形式:tuple、dict和混合

  • 都是声明在函数或方法的末尾

2.1 tuple

在函数或方法的形参末尾进行声明,前缀*标记,可以任意命名,但一般命名为*args

  • 用于接收超出形参声明个数的实参,且超出部分实参是直接设置,而非通过参数名设置
  • 在函数或方法内内,args作为tuple类型,用于读取接收的实参。当不存在超出范围的实参时,args为空tuple

2.2 dict

在函数或方法的形参末尾进行声明,前缀**标记,可以任意命名,但一般命名为**kwargs

  • 用于接收超出形参声明个数的实参,且超出部分实参是参数名设置,而非直接设置
  • 在函数或方法内内,kwargs作为dict类型,用于读取接收的实参。当不存在超出范围的实参时,kwargs为空dict

2.3 混合

在函数或方法的形参末尾进行声明,先声明*args,后声明**kwargs

  • 用于接收超出形参声明个数的实参,args接收直接设置的参数,kwargs接收参数名设置的参数

3、中转

函数或方法中,可以使用args或kwargs,分别是tuple和dict类型。但是一般不能使用*args或**kwargs,会报异常,比如直接输出或者作为type函数的参数。

一个函数或方法A接收*args或**kwargs,可以将*args或**kwargs直接作为整体,交给其它函数或方法B,此时相当于A的实参直接传递给B。这个过程相当于中转,需要注意保持函数与方法的一些基本规则。

def p1(name, **kwargs):
    p2(name=name, **kwargs)
def p2(name, age, sex):
    print(name, age, sex)
p1(name='abc', age='zz', sex='boy')

 

posted @ 2023-06-04 14:20  挖洞404  阅读(105)  评论(0编辑  收藏  举报