假设这是一个标准
get调用(例如在字典上),这应该很容易。使用
None参数的默认值定义函数,然后通过
color且
size无需费心检查它们!
def apicall(color=None, size=None): pass # Do stuffcolor = 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的默认参数是很常见的,所以有机会,你可以只使用第一种方式。如果您无法修改正在调用的函数并且不知道其默认参数是什么(或者其默认参数是模块常量之类的东西,但这很少见),我只会使用wrapper方法。



