我有一个函数,我想传递两个可选参数。我已经通读了,但不知何故,我无法使它工作。
我在这里缺少什么?
我有类似的东西
def json_response_message(status, message, option_key, option_value):
data = {
'status': status,
'message': message,
}
if option_key:
data[option_key] = option_value
return JsonResponse(data)
我希望它是最后两个参数是可选的。
我已经看到它可以通过
来完成def json_response_message(status, message, option_key='', option_value=''):
但我并不是真的想这样做,并且发现有一种方法可以通过*args and **kwargs
,但它无法让它工作。
我只是坚持使用可选参数但不确定如何调用和使用它们。我读了一些帖子及其帖子。很容易完成并使用for loop
打电话,但不知何故它只是没有为我工作
def json_response_message(status, message, *args, **kwargs):
data = {
'status': status,
'message': message,
}
return JsonResponse(data)
我想在我的数据返回中添加额外的参数,例如......
user = {
'facebook': 'fb',
'instagram': 'ig'
}
return json_response_message(True, 'found', 'user', user)
答案 0 :(得分:2)
你想要这样的东西,我想:
def json_response_message(status, message, options=()):
data = {
'status': status,
'message': message,
}
# assuming options is now just a dictionary or a sequence of key-value pairs
data.update(options)
return data
你可以像这样使用它:
user = {
'facebook': 'fb',
'instagram': 'ig'
}
print(json_response_message(True, 'found', user))
答案 1 :(得分:0)
def json_response_message(status, message, *args):
#input validation
assert len(args) == 0 or len(args) == 2
# add required params to data
data = {
'status': status,
'message': message,
}
# add optional params to data if provided
if args:
option_key = args[0]
option_value = args[1]
data[option_key] = option_value
return data
print(json_response_message(True, 'found', 'user', user))
{'user':'jim','status':True,'message':'found'}