What are other use cases of this,
简洁(因此清晰,一旦你习惯它,因为它毕竟不会牺牲可读性! – )任何时候你需要检查一些东西,如果它是真的那么使用那个东西,或者如果那个东西是另一个值是假的(那是为了 – 和 – 反转它或 – 我非常故意避免实际的关键词 – 或者像是真和假,因为我在谈论每一个对象,而不仅仅是bool! – ).
任何计算机屏幕上的垂直空间都是有限的,并且,根据选择,最好花费在有用的可读性辅助工具(文档字符串,注释,策略性地放置空行来分隔块,……)上,而不是转向,例如:
inverses = [x and 1.0/x for x in values]
分为六个如:
inverses = []
for x in values:
if x:
inverses.append(1.0/x)
else:
inverses.append(x)
或更狭窄的版本.
and/or what is the rationale for this
rather unintuitive implementation?
由于某些语言(如标准Pascal)未指定评估顺序和和/或的短路性质,因此初学者不但没有“不直观”,而且经常被绊倒. Turbo Pascal和语言标准之间的区别之一,就是在当天使得Turbo成为有史以来最受欢迎的Pascal方言,正是Turbo实现的,并且或者像Python稍后那样(并且C语言早先做过……) ).