哪种Python三元运算符更好,为什么?
我到处在查资料,包括在这个链接上:Python有没有三元条件运算符?。大家普遍认为
result = a if a > b else b
比
result = a > b and a or b
更好。但没有人解释为什么。有没有人能详细说说?
如果只是为了可读性,那其实就是个人喜好:有些人喜欢一种,有些人喜欢另一种。那么我的问题是:选择一种写法真的有技术上的优势吗?
1 个回答
14
result = a if a > b else b
这种写法更好,因为它总是语义上正确。换句话说,无论 a
或 b
的值是什么,你总能得到你预期的结果。而 result = a > b and a or b
这种写法,如果 a
是个“假值”(比如 0
、None
等),那么每次都会得到 b
。
另外,a if x else b
是一种特定的语言结构,这样其他 Python 开发者通常会更容易理解。最终,任何查看或维护你代码的人都应该尽量少花脑力去理解代码的逻辑。