func(1, 2, **{'a': 3, 'b': 4, 'c': 5} ) # 等同于 func(1, 2, a = 3, b = 4, c = 5)
# 输出结果: # 输出结果一致
1 2
{'a': 3, 'b': 4, 'c': 5}
接收任意长度、任意形式参数的函数
def func(*args,**kwargs):
pass
调用方式:
func(1, 2, 3) # 参数被 * 接受,转成元组,保存在 args 中
func(1, x=1, y=2) # 1 与上述一致,x=1, y=2 被 ** 接受,转成字典的形式,保存在kwargs中
# 前面已经提过,位置实参和关键字实参混合使用时,要注意关键字实参必须放在位置实参的后面~
命名关键字参数
定义函数时,* 号后面的形参就是 命名关键字参数,在调用时,命名关键字参数 必须要传值,而且必须要以关键字的形式传值,还有命名关键字并不常用~
def func(*, name, age): # name 和 age 就是 命名关键字参数
print(name)
print(age)
func(name = 'abc', age = 2) # name 和 age 必须以关键字的形式传值
命名关键字参数的使用示例。前面提过 默认形参必须放在位置形参后面,如下示例的函数定义中,name 和 age 都是命名关键字参数(不是默认形参,也不是位置形参),name 是命名关键字参数的默认值,所以如下示例中的函数定义方式并没有问题~
def func(*,, age):
print(name)
print(age)
func(age=2)
.................^_^
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx