Skip to main content
 首页 » 编程设计

python之强制函数调用者决定使用哪个默认值

2025年05月04日12zhwl

假设我有以下功能:

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)