【发布时间】:2013-08-18 14:01:07
【问题描述】:
以下逻辑表达式的用法是否符合 Pythonic / pep8 标准?
-
这个:
x = a or b代替:
if not a: x = b else: x = a -
这个:
x = a and b代替:
if not a: x = a else: x = b -
(曲线球?)这个:
x = x or y代替:
if not x: x = y
【问题讨论】:
-
我不认为 PEP8 指定了这种事情。我的意见:第二个版本更具可读性,因此更可取。不要让我思考。
-
1 和 3 很简单,也很常用(虽然我不确定 3),但是 2 花了我几秒钟的时间阅读,所以我可能不会使用它。
-
“可读性很重要”。不管它们中的任何一个对于相对有经验的 Python 程序员来说是多么容易阅读,我认为它们可能会使任何来自逻辑运算符返回布尔值的语言的人感到困惑。
-
如果 1 和 2 是非pythonic,
and和or将得到布尔结果,因为这是它们当前行为的唯一应用 -
@Scruffy:
node.get('y', False)更直接。
标签: python logical-operators pep8