一尘不染

赋值语句中的短路是否被认为是好的样式?

python

如果我理解正确

myvar = a and b or c

给出与以下结果相同的结果

if a:
  if b:
    myvar = b
  else:
    myvar = c
else:
  myvar = c

所以我想它更优雅。

我似乎还记得在JavaScript代码中看到过这种短路分配语句。但是在Python中在赋值语句中使用短路是否被认为是好的样式?


阅读 175

收藏
2021-01-20

共1个答案

一尘不染

这确实是一个意见问题,但在大多数情况下,答案是否定的。它与多种样式指南背道而驰,可能是因为人们倾向于认为它的意思是“如果a为真,则使用b的值,否则使用c的值”,而不是您发布的实际含义。

您可能需要新的条件表达式语法:

myvar = b if a else c
2021-01-20