有没有办法列出可选参数?蟒蛇

时间:2017-05-04 20:30:34

标签: python django parameters optional-parameters

我们说我有一个带有一个/两个选项的功能,但是如果我想稍后再添加更多内容呢?有没有办法让它工作没有太多麻烦?

def json_response_message(status, message, option=(), option1=()):
    data = {
        'status': status,
        'message': message,
    }
    data.update(option)
    data.update(option1)
    return JsonResponse(data)

所以我可以像:

一样使用它
json_response_message(True, 'Hello', {'option': option})

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

def json_response_message(status, message, **kwargs):
    data = {
        'status': status,
        'message': message,
    }

    data.update(kwargs)
    return JsonResponse(data)

json_response_message(True, 'Hello', option=option, option1=option1) # etc...

或者

json_response_message(True, 'Hello', **{"option": option, "option1": option1})

希望这有帮助。

答案 1 :(得分:0)

您可以考虑使用可变长度参数*args。它们在函数参数中以*为前缀。试试这个例子。

def json_response_message(status, message, *options):
data = {
    'status': status,
    'message': message,
}
for option in options:
    data.update(option)
return JsonResponse(data)

然后,您可以根据需要使用尽可能多的参数调用函数。 json_response_message(True, 'Hello', {'option': option}, {'option1': option})

有关简化的进一步说明,请参阅http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/