【问题标题】:How to reduce the number of return statements after if and elifs?如何减少 if 和 elifs 之后的 return 语句数量?
【发布时间】:2022-01-21 14:53:07
【问题描述】:

我正在尝试开发一个模板,该模板可以在用户使用 Flask 输入后自行调整。我设法让它工作,但有太多 return 声明。

if form == 'Y':
    return render_template("mypage.html",title = title_1, body = body_1)
elif form == 'N':
    return render_template("mypage.html",title = title_2, body = body_2)
else:
    return render_template("mypage.html",title = title_3, body = body_3)

有没有办法减少return 语句?我试过了,但没有用:

if form == 'Y':
   title_return = title_1, body = body_1
elif form == 'N':
   title_return = title_2, body = body_2
else:
   title_return = title_3, body = body_3

return render_template("mypage.html",title_return = title, body_return = body)

【问题讨论】:

  • 下面有很多好的答案,但我想我不得不问:三个return语句有什么问题?
  • "我试过了,但没用:"好吧,你有代码title_return = title_1, body = body_1,你到底想要它做什么?你想同时做两个作业,对吧?所以,there's syntax for that.

标签: python


【解决方案1】:

您在render_template 中的分配错误。如下所示。

if form == 'Y':
   title_return, body_return = title_1, body_1
elif form == 'N':
   title_return, body_return = title_2 body_2
else:
   title_return, body_return = title_3, body_3

return render_template("mypage.html",title = title_return, body = body_return)

您可以创建一种方法来减少代码。这需要输入并返回标题和正文。

【讨论】:

  • 没有body_return。只是body
  • 我编辑了代码。
  • 谢谢!它比我预期的要简单
【解决方案2】:

您在上次函数调用中颠倒了参数名称和值,并且您从未分配 body_return

如果您在 if/elif/else 语句中将逗号更改为分号,则应该可以:

if form == 'Y':
   title_return = title_1; body = body_1
elif form == 'N':
   title_return = title_2; body = body_2
else:
   title_return = title_3; body = body_3

return render_template("mypage.html",title=title_return, body=body)

【讨论】:

  • 为什么要使用分号,如果可以使用title_return, body = title_1, body_1,其他人也一样
  • 确实如此。我的意思是尽量减少更改的数量。
  • 谢谢!你的回答对我也有帮助
【解决方案3】:

您可以创建具有两个值“Y”和“N”的字典。然后你只需检查它是否在里面,瞧:

temp_dictionary = {
   "Y": [title_1, body_1],
   "N": [title_2, body_2]
}

if form in temp_dictionary:
   title_return  = temp_dictionary[form][0]
   body  = temp_dictionary[form][1]
else:
   title_return  = title_3
   body  = body_3
return title_return, body

这样,以后如有必要,您还可以扩展 dict。

【讨论】:

  • 你不应该使用dict作为变量名,你也可以通过title_return, body = dct[form]title_return, body = title_3, body_3解压,或者更短的只是title, body = dct.get(form, (title_3, body_3))
猜你喜欢
  • 2015-07-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
相关资源
最近更新 更多