*args 和**kwargs 的理解以及 函数的参数的总结

一:函数参数的理解:

def 函数名(函数参数):
    函数体

例如:
def func(a):  # a 是形参
    print(a)

func(123)  # 123 是实参

形参又分为: 关键字参数,位置参数,混合参数
关键字参数
def func(x,y,z="默认参数"):
    print(x,y,z)

func(1,y="xumou")  # 1 xumou 默认参数
'''
1 代表 位置参数、
y 代表  关键字参数
z 代表默认参数

他们之间的关系:关键字参数必须要在位置参数的后面,

位置参数〉关键字参数,默认值参数

'''
# 接收动态参数的时候,动态参数必须要在位置参数后面
def func01(a,b,*gg):

    print(gg,a,b)

func01(1,2,"34")

# 位置参数和默认值参数:必须先声明位置参数,再声明默认值参数
def func03(a,c=12):

    print(a,c)

func03("AA")  #  AA 12


# *pp中的*接收任意动态参数:
def func03(*pp):
    print(pp)
func03("q","w","e",22,33)  # ('q', 'w', 'e', 22, 33)


# 接受动态参数:位置参数必须要在动态参数

def func04(a,b,*args):
    print("func04>>",a,b,args)
func04(1,2,5,7)  # func04>> 1 2 (5, 7)

# ----------错误示范:----------
def func04(*args,a,b):
    print("func04>>",a,b,args)
func04(1,2,5,7)  # 报错

# --------------------

# 报错:因该改为:
def func04(*args,a,b):
    print("func04>>",a,b,args)
func04(1,2,a=5,b=7)  # func04>> 5 7 (1, 2)



# **kwargs 用来接收动态关键字参数
def func02(**kwargs):
    print(kwargs)  #  {'a': 12, 'b': 23}  结果是一个dict

func02(a=12,b=23)


# 最终的顺序是:
# 位置参数〉*args〉默认值参数〉**kwargs

猜你喜欢

转载自www.cnblogs.com/one-tom/p/11263786.html