2015-07-20 18 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