2011-12-07 47 views
2

在Python,有算作False几个值:避免0和其他算作虚假

>>> if False or None or 0 or 0.0 or '' or [] or {} or set(): 
... print 'True :)' 
... else: 
... print 'False :(' 
... 
False :(

因此,地方在我的代码我在做这样的事情:

some_var = other_var or 'default' # Some default value 

other_var可能是None或任何其他值,如果它是None,some_var应填写'default'

但我一直有一些麻烦与这一点,所以,调试我的代码,我发现,other_var有时是0(或计数为False任何其他值),并some_var充满了'default'而不是0

那么,有没有办法完成我所要做的而不是做这件事?

if other_var is None: 
    some_var = 'default' 
else: 
    some_var = other_var 

没有是一个有效的答案。

+2

你可以使用't if expr else f'语法。 – 2011-12-07 23:12:20

+0

@Nate,仍然无法正常工作(试用'other_var = 0') – juliomalegria

+0

@ julio.alegria哎呀!完全误解你的问题。 :^) – Nate

回答

6

Conditional Expression(又名 “三元操作”)语法:

some_var = 'default' if other_var is None else other_var 

编码愉快。

+2

嗯,我希望这是最好的方式,因为我总是使用这个东西,我不想改变我所有的旧代码! – wim

+0

我想我们有一个赢家 – juliomalegria

+1

仅供参考这大致相当于C的'some_var = other_var? other_var:default' – dkamins