您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python —仅在变量存在时传递参数

Python —仅在变量存在时传递参数

假设这是一个标准get调用(例如在字典上),这应该很容易。使用None参数的认值定义函数,然后通过colorsize无需费心检查它们!

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认参数是很常见的,所以有机会,你可以只使用第一种方式。如果您无法修改正在调用函数并且不知道其认参数是什么(或者其认参数是模块常量之类的东西,但这很少见),我只会使用wrapper方法

python 2022/1/1 18:43:36 有295人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶