哪种Python三元运算符更好,为什么?

5 投票
1 回答
997 浏览
提问于 2025-04-17 14:19

我到处在查资料,包括在这个链接上:Python有没有三元条件运算符?。大家普遍认为

result = a if a > b else b

result =  a > b and a or b

更好。但没有人解释为什么。有没有人能详细说说?

如果只是为了可读性,那其实就是个人喜好:有些人喜欢一种,有些人喜欢另一种。那么我的问题是:选择一种写法真的有技术上的优势吗?

1 个回答

14

result = a if a > b else b 这种写法更好,因为它总是语义上正确。换句话说,无论 ab 的值是什么,你总能得到你预期的结果。而 result = a > b and a or b 这种写法,如果 a 是个“假值”(比如 0None 等),那么每次都会得到 b

另外,a if x else b 是一种特定的语言结构,这样其他 Python 开发者通常会更容易理解。最终,任何查看或维护你代码的人都应该尽量少花脑力去理解代码的逻辑。

撰写回答