2011-02-01 127 views
2
show_prev_btn = (len(sessions) > 0 and (sessions[0].pk == \ 
    Session.objects.filter(user=request.user).first().pk)) 

我有這個布爾值,我正在計算。會話是一個列表,如果它有0個元素,會話[0]將引發異常。幸運的是,我認爲我可以通過檢查len(會話)> 0來評估它。評估一個複雜的條件python

這適用於我的本地開發機器,但是這是否可行或我應該嵌套這些條件?

+0

什麼是條件python? – 2011-02-01 02:04:53

回答

5

在Python中,and運營商defined to use short-circuit evaluation。所以如果你有像

a() and b() 

然後第一個a()將被調用。只有在返回True時,纔會調用b()。如果a()返回False,則不會調用b(),因此如果a()False,您可以在b()中執行可能會崩潰的操作。

這是當然可以接受的做法並被廣泛使用。

0

嵌套條件的優點是,在這種特定情況下,它可能會提高可讀性(通過減少行長度)。

雖然在我看來,兩者同樣都是不錯的解決方案是品味和代碼風格比什麼都重要(懷疑的性能差異,如果有的話,將有很大的影響)的問題。

0

要從an older question複製,請試試這個。語法更直觀,但區別是任意的。

sessions[0].pk == Session.objects.filter(user=request.user).first().pk) if len(sessions) else False