2011-08-02 44 views
3

想象一下以下三元條件:這個三元條件有更好的解決方案嗎?

foreground = self.foreground if self.foreground else c4d.COLOR_TRANS 

在這種情況下,我需要調用self.foreground兩次只是爲了檢查是否True與否。 有沒有辦法讓我只需要調用一次?

+4

除非本走的是一條很長的時間,我會離開它,因爲它是 - 它是更具可讀性比做'foreground = self.foreground或c4d.COLOR_TRAN'和現在的方式意味着它是完全明顯的發生了什麼。 「較短的類型」的方法是相當混亂的看看。 此外,如果你的那一行*花費了太多時間來評估,我建議修改'self.foreground'以減少調用時間,而不是改變這一行。 – combatdave

回答

7

一個等效的表達式是

foreground = self.foreground or c4d.COLOR_TRANS 
+1

...因爲Python的邏輯運算符不只是返回布爾值;他們給你的實際價值導致他們下定決心。 (因此,例如,如果a爲真,'a或b'評估爲'a'(而不是'True'),否則爲 – katrielalex

+0

如果兩者均爲假,則存在問題。在if-else子句中沒有。 – BrainStorm

+1

@BrainStorm,對不起,有什麼問題? '0或'''=>''''。 – senderle

3

您可以使用布爾運算符:

foreground = self.foreground or c4d.COLOR_TRANS 
相關問題