如何正确使用反斜杠在if语句中继续行?

时间:2012-04-17 17:00:24

标签: python

e.g。 D,如果sum_p不为零。

D = 1/sum_p if sum_p \
    else 0

如果我想返回值怎么办?我应该这样做:

return 1/sum_p if sum_p \
else 0

或者只写

if...
else: return 0

4 个答案:

答案 0 :(得分:5)

如果要进行单个语句条件返回,请使用:

return 1 / sum_p if sum_p else 0

不是if声明。这是一个conditional expression。把它想象成

return (this_value if this_condition_is_true else that_value)

return本身 条件。

如果该行足够长,则必须将其拆分,从风格上来说,我建议使用普通的if语句和两个return语句。

通常,不使用\作为行终止符PEP-8建议您始终使用括号:

  

包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续。通过在括号中包装表达式,可以在多行中分割长行。这些应该优先使用反斜杠来继续行。确保适当缩进续行。打破二元运算符的首选位置是运算符之后,而不是它之前。一些例子:

答案 1 :(得分:0)

如果你将它分配给一个变量,第一种方法就好了。

如果要返回值,请使用return语句替换分配。

示例:

return 1/sum_p if sum_p \
else 0

答案 2 :(得分:0)

我个人更喜欢远离逃避新行。通常,您可以使用括号来实现相同的目标。在\可能会破坏您的代码之后,转义换行符可能会出现太多错误。要使用您的示例:

return (1.0 / sum_p if sum_p
    else 0)

答案 3 :(得分:0)

除非绝对必要,否则请勿使用\

使用

D = 0 if not sum_p else 1.0/sum_p

或者

return 0 if not sum_p else 1.0/sum_p

如果线条太长或太复杂,只需使用:

if cond: ...
else : ....