我有这样的代码
def find_user(user_id):
if not users.lookup(user_id):
return jsonify(success=False, reason="not found")
else:
return users.lookup(user_id)
@app.route(...)
def view1(...):
user = find_user(...)
if user:
do_something
return jsonify(success=True, ....)
问题在于我有一个帮助函数,如果满足condition
,我想立即返回响应。在这种情况下,如果用户未找到,我想返回一个请求,说明请求失败并给出原因。
问题是,由于该函数还可以返回一些其他值(比如用户对象),我不能从请求中返回。相反,因为我们得到了一个分配,我们将继续执行其余的代码路径。
我可能可以进行类型检查,但那很丑陋!
理想情况下,这是更长的代码
def view(...)
user = users.lookup(user_id)
if not user:
return jsonify(success=False....)
# if user is true, do something else
辅助函数find_user
的主要作用是提取公共代码,然后在几个类似的API中重复使用。
是否有一种方法可以直接在当前代码中返回响应?看起来这是一个死路......除非我改变代码的编写方式(如何返回值...)