是否可以为函数提供可选参数,但是如果要在函数调用中声明关键字,则必须使用关键字吗?
例如,
def f(arg1, *otherargs, useme2declare):
....
需要一个强制性第一个参数,后跟一些未指定数量的位置和可选参数(带有可选关键字),但是useme2declare
要求在调用中使用该关键字,它也是强制性参数。如何在通话中使其成为可选内容?将其放在*otherargs
之前也会使关键字成为可选关键字。
编辑:请仔细阅读我的问题。我想每次调用该函数时都为useme2declare
使用关键字MANDATORY,同时使useme2declare
的输入为可选。
答案 0 :(得分:3)
您可以在所有位置参数之后的签名中使用useme2declare
来使参数*
仅使用关键字{em} ,并为基本情况使用默认值:
def f(arg1, otherarg1, otherarg2, *, useme2declare=None):
这里是一个例子:
In [981]: def spam(*, egg=5):
...: return egg
...:
In [982]: spam(100)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-982-8ddebef6cd4e> in <module>
----> 1 spam(100)
TypeError: spam() takes 0 positional arguments but 1 was given
In [983]: spam(egg=100)
Out[983]: 100
请注意,在使用此参数时,不能使用可变长度的位置参数(例如*args
)。
但是,如果需要,您可以自由使用可变长度关键字参数:
def f(arg1, *, useme2declare=None, **kwargs):