假设这是一个标准get
调用(如字典),这应该很容易。使用参数的默认值定义您的函数None
,然后传递color
而size
无需检查它们!
def apicall(color=None, size=None):
pass # Do stuff
color = request.GET.get('color')
size = request.GET.get('size')
apicall(color, size)
这样,您只需None
在一个地方检查参数(在函数调用内部,无论如何您都必须检查该函数是否可以通过多种方式调用)。一切都保持良好和干净。当然,这假设(就像我在顶部所说的那样)您的get
调用就像一个普通的 Python 字典的get
方法,None
如果找不到该值,它就会返回。
最后,我注意到您的函数名称是apicall
:您实际上可能无法访问函数代码本身。在这种情况下,由于您可能对函数签名的默认值一无所知并且None
可能是错误的,因此我可能会编写一个简单的包装器来为您进行参数检查。然后你可以像上面那样调用包装器!
def wrapped_apicall(color=None, size=None):
if color is None and size is None:
return apicall()
# At least one argument is not None, so...
if size is None:
# color is not None
return apicall(color)
if color is None:
# size is not None
return apicall(size)
# Neither argument is None
return apicall(color, size)
注意:除非您看不到您正在调用的代码并且没有任何文档,否则不需要第二个版本!使用None
作为默认参数是很常见的,所以你很可能只使用第一种方式。如果你不能修改你正在调用的函数并且你不知道它的默认参数是什么(或者它的默认参数是模块常量或其他东西,但这非常罕见),我只会使用包装器方法。