尝试后续尝试,或尝试与后续if

时间:2015-07-20 15:32:38

标签: python pyramid

我已经了解了tryif之间的差异,但之后呢?

假设以下内容:

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

2 个答案:

答案 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()