Python 如果一行中有多个if-else,如何解释它们?

Python 如果一行中有多个if-else,如何解释它们?,python,python-3.x,if-statement,Python,Python 3.x,If Statement,好吧,我当然明白,如果有其他人是在单行返回像 return 0 if x==y else 1 def cmp(x, y): return 0 if x == y else 1 if x > y else -1 翻译成 if x==y: return 0 else: return 1 我对那些在同一行中多次出现if-else的语句感到困惑,比如 return 0 if x==y else 1 def cmp(x, y): return 0 if x =

好吧,我当然明白,如果有其他人是在单行返回像

return 0 if x==y else 1
def cmp(x, y):
    return 0 if x == y else 1 if x > y else -1
翻译成

if x==y:
    return 0
else:
    return 1
我对那些在同一行中多次出现if-else的语句感到困惑,比如

return 0 if x==y else 1
def cmp(x, y):
    return 0 if x == y else 1 if x > y else -1

如何解释和理解用单行书写的if-else语句。

为清楚起见,它是嵌套的else-if语句,可以这样看

 if x == y:
     return 0
 else:
     if x > y: 
        return 1 
     else: 
        return -1
如果代码是清晰易懂的,而不需要太多的努力,那就太好了

所以稍后,如果您想在冗长的条件语句中再添加一个case,那么可以这样做,所以更好的选择是使用
elif
梯形图

def _comp(total):
    if total>90:
        return 'Python lover'
    elif total>80 and total<=89:
        return 'Friend of python'
  #     elif total>50 and total<=79      added later easily
  #         return 'you like python'     added later easily
    else:
        return 'python is waiting for you'
def_comp(总计):
如果总数>90:
返回“Python爱好者”

elif total>80和total50以及total引入括号使其更容易理解

0 if x == y else 1 if x > y else -1
必须解析为

0 if x == y else (1 if x > y else -1)

这是一个很好的答案,因为它说明了如何处理更复杂的表达式,例如
a if cond1 else(B if cond2 else(C if cond3 else(D))
,虽然您通常应该尽可能避免类似的事情。@ChronoKitsune
虽然您通常应该尽可能避免类似的事情
True,但当我浏览大多数python库时,它们都充满了此类语句。@Rakesh_K是的,这是真的。如果你有一长串的单行If-else语句,通常最好是通过使所有内容更清晰来提高可读性。根据Python的禅(<代码>导入):“稀疏比稠密好”,“如果实现很容易解释,这可能是个好主意。”当你开始这样做的时候,它变得更加复杂,这意味着你可以考虑改变它,因为“简单胜过复杂”,“可读性很重要”。有时候复杂性有很好的理由,所以禅宗并不禁止它。