Python,一行if,else还是声明?

时间:2014-10-26 01:19:08

标签: python if-statement

我很清楚您可以在Python中执行一行if else语句,但我想知道是否可以向其添加or。出于某种原因,这不起作用,即使它看起来应该如此。有没有办法做到这一点:

def write(value):
    return 'That is not a good value' if value is not 1 or 0 #SyntaxError: invalid syntax

修改

因此,此函数将检查传入的值是否为整数0或1,如果不是则返回'That is not a good value',否则返回任何内容。即。

write(1) #Nothing
write(2) # That is not a good value

2 个答案:

答案 0 :(得分:6)

试试这个:

'That is not a good value' if value not in (0, 1) else None

在上面,我们可以使用in成员资格运算符来测试具有两个或更多条件的or表达式的等价物。请注意,条件表达式必须具有else部分(请参阅documentation)。如果你不想返回“任何东西”,你仍然需要返回某些东西。例如,空字符串''None

答案 1 :(得分:3)

有两个问题。

  1. 如果代码不是0或1,那么该代码应该返回什么?
  2. 您的条件被解析为:value is not (1 or 0)
  3. 您真的不应该使用is来比较数字。使用==!=
  4. 让我们解决它。

    def write(value):
        return 'That is not a good value' if value != 1 and value != 0 else 'Great value!'
    

    或者,为了清晰起见使用一套:

    def write(value):
        return 'That is not a good value' if value not in {0, 1} else 'Great value!'
    

    而且,我们现在可以看到这一点:

    >>> def write(value):
    ...     return 'That is not a good value' if value not in {0, 1} else 'Great value!'
    ... 
    >>> write(0)
    'Great value!'
    >>> write(1)
    'Great value!'
    >>> write(2)
    'That is not a good value'