标签:字典 多个 没有 可变参数 应该 直接 *args print 存在
形参,徒有其形,没有固定值,只是个形式而已。
实参,有实实在在的值,传递给函数
def test(x,y,z = 3): # x,y,z 形参 print(x,y,z) test(1,2) # 1,2 实参
位置参数是严格按照一一对应的关系,将你的实参和位置参数对应赋值。
def test(x,y,z = 3): # x,y,z 形参; 其中x,y是位置参数,z是默认参数 print(x,y,z) test(1,2) # 1,2 实参,1对应赋值给x,2对应赋值给y;只写了两个值,没有给默认参数z赋值,则z的默认值就是函数里设定的3
test(1,2,4) # 给默认参数也赋值了:4
关键字参数,就是手动的将 形参 和 实参 对应起来,然后将 值 传递给函数
def test(x,y,z = 3): # x,y,z 形参; 其中x,y是位置参数,z是默认参数 print(x,y,z) test(y =2 ,x=1, z=5) # 关键字参数,直接赋值,可以打乱x/y/z 的赋值顺序
test(1,2,z=5) # 注意,当位置参数和关键字参数同时存在时,关键字参数一定要放在位置参数之后!
可变参数可以允许传入多个参数,没有固定数量,以 ‘*<参数名>’ 来表示
# 可变参数 def test2(x,y,z=3,*args): # *args 会把多传入的参数变成一个元组形式 print(x,y,z,args) test2(1,2,3,4,5,6) # 注意此时的3赋值给了z,后面的4/5/6才是可变参数的值;
另一种可变参数,会将关键字参数作为传递给函数,然后转换成键值对,用‘**’表示:**kwargs
def test3(x,y,z=3,*args,**kwargs): # **kwargs接受关键字参数,作为键值对存入字典 print(x,y,z,args,kwargs) test3(1,2,3,4,5,6,name = ‘1‘,age = 22) # 此处的关键字参数作为键值对,存入**kwargs: {‘name’:‘1‘,‘age‘:22}
当一个函数同时存在多种参数类型时,参数的排序应该是:位置参数、默认参数、关键字参数、*args、**kwargs
eg.
def test3(x,y,z=3,*args,**kwargs): print(x,y,z,args,kwargs)
标签:字典 多个 没有 可变参数 应该 直接 *args print 存在
原文地址:https://www.cnblogs.com/wztshine/p/11764248.html