SyntaxError:无效语法 - python中的一行if语句

时间:2016-10-13 11:52:51

标签: python if-statement

我的初始if else代码是:

if response.get('fulfillments') is None:
    return (False, response)
else:
    return (True, response)

但我想将其转换为one-line-if-else-statement

这是我正在做的事情:

return (False, response) if response.get('fulfillments') is None else return (True, response)

但它引发了语法错误,我做错了什么?

3 个答案:

答案 0 :(得分:7)

单行if-else与块不同。它是一个表达式,而不是一个语句或多个语句。你做不了类似的事情:

(x = 4) if x > 5 else (x = 6)

因为这些是陈述。相反,它是这样的:

x = (4 if x > 5 else 6)

或者在你的情况下:

return (False, response) if response.get('fulfillments') is None else (True, response)

但你真的不需要if-else。就这样做:

return (response.get('fulfillments') is not None, response)

答案 1 :(得分:2)

省略第二个return。简化:

>>> def foo(x):
...    return True if x == 2 else False

将其读作"返回此三元表达式的结果"不是"在一个案例中返回这个东西,但在另一个案例中返回一些其他东西"

答案 2 :(得分:2)

return (False, response) if response.get('fulfillments') is None else (True, response)

val_positive if expression else val_negative。 val_positive或val_negative不能包含return语句