1

例如 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

4 回答 4

5

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

return 1 / sum_p if sum_p else 0

不是一个if声明。这是一个条件表达式。把它想象成

return (this_value if this_condition_is_true else that_value)

return本身在条件之外

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

一般来说,不要\用作行终止符PEP-8建议您始终使用括号:

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

于 2012-04-17T17:04:35.713 回答
0

如果您将其分配给变量,则第一种方法很好。

如果要返回值,请将赋值替换为return语句。

例子:

return 1/sum_p if sum_p \
else 0
于 2012-04-17T17:02:02.923 回答
0

就我个人而言,我更喜欢远离转义换行符。很多时候,您可以使用括号来实现相同的目标。使用转义换行符作为 \ 后的空格可能会出错,这可能会破坏您的代码。要使用您的示例:

return (1.0 / sum_p if sum_p
    else 0)
于 2012-04-17T17:03:28.920 回答
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 : ....
于 2012-04-17T17:04:45.347 回答