4.second只能作为关键字参数传入。
func(“lisi”, second=“cool”)
lisi
()
cool
{}
5.定位函数也能作为关键字参数传入。
func(first=“san”)
san
()
Hello World
{}
6.字典前加上**
,其所有元素作为单个参数传入,同名键会绑定到对应具名参数上,余下的被**args
捕获。
my_dict = {“first”: “lisi”, “location”: “cd”, “second”: “cool”, “age”: “secret”}
func(**my_dict)
lisi
()
cool
{‘location’: ‘cd’, ‘age’: ‘secret’}
除了这四种参数,还有一种Python3新增加的仅限关键字参数。
仅限关键字参数
仅限关键字参数(keyword-only argument)是Python3的新特性,func函数的second参数就是仅限关键字参数,“仅限”的意思是说,只能通过关键字参数指定,它一定不会捕获未命名的定位参数。
假如把参数位置调整一下定义another_func
函数:
‘’’
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加群:579817333
‘’’
def another_func(first, another_second=“Hello World”, *args, **kwargs):
print(first)
print(another_second)
print(args)
print(kwargs)
another_func(“lisi”, “a”, “b”, “c”)
输出会变成:
lisi
a # 注意这里
(‘b’, ‘c’)
{}
another_second
不是仅限关键字参数,而只是默认值参数,因为它捕获到了定位参数。
由此得知,定义仅限关键字参数,必须把它放到*args参数后面,就像func函数一样,反例是another_func
函数。
还有第二个方法定义仅限关键字参数,在签名中放一个*:
def f(a, *, b): # b是仅限关键字参数
… return a, b
…