w88优德官网_优德88官方网站登录_优德88官方

太岁是什么,Python函数参数匹配模型通用规矩keyword-only参数-w88优德官网

admin5个月前149浏览量

概述

Python3对函数参数的排序规矩愈加通用化了,即Python3 keyword-only参数,该参数即为有必要只依照关键字传递而不会有一个方位参数来填充的参数。该规矩在处理人一多个参数是很有用的。

keyword-only

kword_only(1, 2, 3, c=4)
print('-' * 20)
kword_only(a=1, c=3)

示例成果:

1 (2, 3) 4
--------------------
1 () 3

在*args之后的参数都需求在调用中运用关键字的方法传递,不然会抛出反常。

def kword_only(a, *b, c):
print(a, b, c)
kword_only(1, 2, 3)

反常成果:

 kword_only(1, 2, 3)
TypeError: kword_only() missing 1 required keyword-only argument: 'c'

咱们也能够在参数列表中运用一个*字符,表明函数不会承受变量长度的参数列表,而是要求*后边的参数都需求运用关键字参数的方法传递。

def kword_only(a, *, b, c):
print(a, b, c)
kword_only(1, b=2, c=3)
print('-'*20)
kword_only(b=2, c=3, a=1)

示例成果:

1 2 3
--------------------
1 2 3

咱们能够看到a能够运用方位参数进行传递,可是b、c有必要经过关键字参数传递,不然就会抛出反常。

def kword_only(a, *, b, c):
print(a, b, c)
kword_only(1, 2, 3)

反常成果:

 kword_only(1, 2, 3)
TypeError: kword_only() takes 1 positional argument but 3 were given

当然咱们,能够经过对keyword-only参数运用默认值,这样例中的a仍能够经过方位参数或许关键字参数传递,而b、c便是可选的了,当然假如需求传递的话仍然是要运用关键字参数进行传递的。

def kword_only(a, *, b=2, c=3):
print(a, b, c)
kword_only(1)
print('-'*20)
kword_only(a=1)
print('-'*20)
kword_only(b=22, c=33, a=11)

示例成果:

1 2 3
--------------------
1 2 3
--------------------
11 22 33

最新评论