047 可变长参数

可变长参数:指的是在调用函数时,传入的参数个数可以不固定

调用函数时,传值的方式无非两种,一种是位置实参,另一种是关键字实参,因此形参也必须得有两种解决方法,以此来分别接收溢出的位置实参(*)与关键字实参(**)

  • 形参
    • 位置形参
    • 默认形参
  • 实参
    • 位置实参
    • 关键字实参

一、可变长形参之* (牢记)

接收多余位置实参, 以元祖的形式存储,然后把元组赋值给*后的参数。需要注意的是:*后的参数名约定俗成为args

# 可变长参数之*       # 接收多余位置实参, 以元祖存储
def func(a, b, *args):  # *abc会接收多余的位置实参,应该使用args作为变量名,args是约定俗称
    print(a, b)
    print(args)         # args就会接收多余的位置实参, 以元祖存储

func(1, 2, 3, 4.0, "a")

1 2
(3, 4.0, 'a')

二、可变长形参之** (牢记)

接收多余的关键字实参,以字典形式存储,然后把字典赋值给**后的参数。需要注意的是:**后的参数名约定俗成为kwargs

# 可变长参数之**      # 接收多余的关键字实参,以字典形式存储
def func(name, pwd, **kwargs):
    print(name, pwd)
    print(kwargs)

func("xucheng",123, xc=123, baba=456)

xucheng 123
{'xc': 123, 'baba': 456}

三、可变长参数*和**联用 (牢记)

def func(name, pwd, *args, **kwargs):
    print(name, pwd)
    print(args)		# 位置参数,元祖
    print(kwargs)	# 关键字参数,字典

func("xucheng",123,4,5,6, woni="ahaha",haha="ad")

xucheng 123
(4, 5, 6)
{'woni': 'ahaha', 'haha': 'ad'}

四、可变长形式参数* (了解)

def func(name, pwd, x, y, z):
    print(name, pwd)
    print(x, y, z)

tup = (4, 2, 3)
func('nick', 123658, *tup)  # *会把元祖打散成位置实参传给形参,解压缩

nick 123658
4 2 3

五、可变长形式参数** (了解)

def func(name, pwd, **kwargs):
    print(name, pwd)
    print(kwargs)

dic = {'a': 1, 'b': 2}  # **dic  --> a=1 , b=2
func('nick', 123658, **dic)  # **会把字典打散成关键字实参传给形参,解压缩

nick 123658
{'a': 1, 'b': 2}

原文地址:https://www.cnblogs.com/XuChengNotes/p/11329279.html