2015-07-20 20 views
2

下面這個話題One line if-condition-assignment一號線如果分配在Python

有沒有辦法來縮短有建議的聲明:

num1 = (20 if intvalue else 10) 
的情況下

所分配的值是在條件相同的嗎?

這是它現在的樣子:

num1 = (intvalue if intvalue else 10) 

intvalue出現了兩次。有沒有辦法只使用一次intvalue並得到相同的聲明?更優雅的東西?

+0

SomeBoolValue的值可以是10,而不是隻有True或False。 – RemcoGerlich

+0

看編輯,我的意思是整數值 – John

回答

6

你可以在這裏使用or

num1 = intvalue or 10 

or短路;如果第一個表達式爲真,則返回該值,否則返回第二個值的結果。

+0

是的。真。小心。與'或'短路。這裏沒有問題(因爲'someBoolValue'只能是True或False),但是不要忘記像dict和list這樣的其他對象在空時被視爲False。 – FunkySayu

+0

@FunkySayu:是的,但是在條件表達式*中,相同的值將被視爲錯誤*。 –

+0

它也可以在字符串上工作嗎? 'x = string或''' – John