如果表达式给出意外返回,则内联

时间:2015-04-08 11:03:19

标签: python python-3.x if-statement

我试着让它发挥作用:

mp = 2.5 if 'safe_mode' in options else 0.5 if 'fast_mode' in options else 1

但如果两个条件都是0,它会返回False,而应该评估为1

3 个答案:

答案 0 :(得分:1)

似乎按预期工作:

options = {1:2}
mp = 2.5 if 'safe_mode' in options else 0.5 if 'fast_mode' in options else 1
mp
> 1

答案 1 :(得分:1)

我无法复制你的问题;以下测试表明在任何情况下都不会mp == 0

>>> def testing():
    for safe, fast in [(True, True), (True, False), (False, True), (False, False)]:
        options = []
        if safe:
            options.append('safe_mode')
        if fast:
            options.append('fast_mode')
        mp = 2.5 if 'safe_mode' in options else 0.5 if 'fast_mode' in options else 1
        print 'safe_mode' in options, 'fast_mode' in options, mp

>>> testing()
True True 2.5
True False 2.5
False True 0.5
False False 1

答案 2 :(得分:1)

WorksFormMe:

>>> def test(c1, c2):
...     return 1 if c1 else 2 if c2 else 3
... 
>>> test(False, False)
3
>>> test(False, True)
2
>>> test(True, False)
1
>>> test(True, True)
1