假设我有以下功能:
def myFun(a=None, b=None):
print a, b
现在我调用函数:
myFun("hi") # Case 1
>>>hi None
myFun(b="hi") # Case 2
>>>None hi
myFun(a="hi") # Case 3
>>>hi None
如果函数调用者没有决定值“hi”分配给哪个变量,有没有办法抛出异常?这意味着我想在第一种情况下有异常(exception),但在第二和第三种情况下没有。我使用 python 2.7。
请您参考如下方法:
在 Python3 中你可以指定 keyword-only arguments :
def myFun(*, a=None, b=None):
print(a, b)
myFun('hi')
加注
TypeError: myFun() takes 0 positional arguments but 1 was given
在 Python2 中,作为 Ricardo Silveira points out您可以使用 **kwargs 强制所有参数成为关键字参数。
def myFun(**kwargs):
a, b = kwargs.get('a'), kwargs.get('b')
print(a, b)
myFun('hi')
# TypeError: myFun() takes exactly 0 arguments (1 given)
