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来评估它.
这适用于我的本地开发机器,但这是好的做法还是应该嵌套这些条件?
在Python中,and运算符被定义为使用短路评估.所以如果你有一个像这样的表达式
a() and b()
Run Code Online (Sandbox Code Playgroud)
然后先a()打电话.只有返回True时才会b()被调用.如果a()返回False,则b()不会被调用,所以你可以做的事情b()可能会崩溃,如果a()是的话False.
这当然是公认的做法,并被广泛使用.