我知道我可以创建一个命名参数化的python函数,例如
public void updateResult(String topic_name, int userId)
然后我可以用
打电话def t(a=None, b=None):
return a+b
但是,如果 t(b=2, a=5)
和{ a
不是可选的,那么我需要在运行时检查函数,例如
b
是否有可能在编译时检查并尽快失败?
e.g。
def t(a=None, b=None):
if a is not None and b is not None:
return a+b
else:
raise Exception('Missing a or b')
答案 0 :(得分:8)
如果参数不是可选参数,请不要使用默认值。
您仍然可以将这些参数用作呼叫中的命名参数; Python函数中的所有参数都命名为:
def t(a, b):
return a+b
t(a=3, b=4)
请注意,传入错误的参数计数始终是运行时检查,而不是编译时间检查。作为一种动态语言,在编译时不可能知道实际对象t
在调用它时会是什么。
答案 1 :(得分:2)
然而,如果一个& b不是可选的,那么我需要在运行时检查函数,例如
不,不。只是不提供默认值:
def t(a, b):
return a + b
尝试在没有正确数字参数的情况下调用它:
t()
会导致错误:
TypeError: t() takes exactly 2 arguments (0 given)
或者,尝试使用错误命名的参数调用它:
t(c=4)
也会导致错误:
TypeError: t() got an unexpected keyword argument 'c'