我的初始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)
但它引发了语法错误,我做错了什么?
答案 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语句