评估复杂的条件python

oma*_*ish 2 python conditional

show_prev_btn = (len(sessions) > 0 and (sessions[0].pk == \
    Session.objects.filter(user=request.user).first().pk))
Run Code Online (Sandbox Code Playgroud)

我有这个布尔值,我正在计算.Sessions是一个列表,如果它有0个元素,则sessions [0]将引发异常.幸运的是,我认为我可以通过检查len(sessions)> 0来评估它.

这适用于我的本地开发机器,但这是好的做法还是应该嵌套这些条件?

Gre*_*ill 5

在Python中,and运算符被定义为使用短路评估.所以如果你有一个像这样的表达式

a() and b()
Run Code Online (Sandbox Code Playgroud)

然后先a()打电话.只有返回True时才会b()被调用.如果a()返回False,则b()不会被调用,所以你可以做的事情b()可能会崩溃,如果a()是的话False.

这当然是公认的做法,并被广泛使用.