我已经了解了try
和if
之间的差异,但之后呢?
假设以下内容:
try:
email = request.GET['email']
except KeyError:
email = None
那么什么?还有什么 pythonic 和/或高效?
if email is None:
...
或
try:
dostuffwithemail(email)
和大多数事情一样,我认为这取决于它。就我而言,使用if
似乎更好(更有效)。 在你跳跃之前看起来心态适合这里,因为如果电子邮件包含某些东西,它需要做一些事情。否则,它不会/不应该做任何事情。如果它知道它会失败,那么做某事似乎效率低下。
思想?
从评论中编辑:
如果我正确理解流程,那么这似乎会更有效:
try:
email = request.GET['email']
except KeyError:
return HTTPFound(location=request.route_url('home'))
dostuffwithemail(email)
页面的最终结果最终将从dostuffwithemail
返回数据(即,检查针对数据库的电子邮件),然后允许用户提交表单。如果电子邮件不在那里,它会将用户返回到home
答案 0 :(得分:0)
如果可以,最好的方法是:
winrm quickconfig
答案 1 :(得分:0)
在这种特殊情况下,与Pyhton的source code of GetOrAdd
相反,首先要求“获得许可”可能会更好。至少,我认为以下内容更短,更易读,更能传达程序员的意图:
if 'email' in request.GET:
do_stuff_with_email(request.GET['email'])
else:
do_stuff_when_email_is_missing()