PEP 8不鼓励使用复合语句,但我找不到任何关于Python的三元/条件语法的建议用法。例如:
return x if n == 0 else y
i = x if n == 0 else y if n == 1 else z
是否存在关于上述陈述是否应优先于更传统的if / else块的约定?
if n == 0:
return x
return y
if n == 0:
i = x
elif n == 1:
i = y
else:
i = z
答案 0 :(得分:2)
通常应首选“传统的if / else块”。
您仍然希望使用三元运算符的唯一地方是语法需要表达式的地方,例如在lambda表达式中。即使在那里,只有在三元表达式简短且可读时才会这样做(当然,可读性是主观的......)
你总是可以用一个小函数替换一个lambda表达式,但是在你认为会降低代码可读性的地方,可以使用短三元运算的lambda表达式。
答案 1 :(得分:1)
我同意shx2的评论。
另一个考虑因素是可测试性......使用三元expr将所有逻辑放在一行/ expr上。基本的行基代码覆盖工具不会很好地读取测试的真实覆盖率。
使用传统的is / else块可以提供更好的读数。