Coding style 这个成语是蟒蛇的吗?(someBool和“真实结果”或“虚假结果”)
我刚刚在一些开源Python中遇到了这个成语,我喝得噎死了 而不是:Coding style 这个成语是蟒蛇的吗?(someBool和“真实结果”或“虚假结果”),coding-style,python,Coding Style,Python,我刚刚在一些开源Python中遇到了这个成语,我喝得噎死了 而不是: if isUp: return "Up" else: return "Down" 甚至: return "Up" if isUp else "Down" 代码如下: return isUp and "Up" or "Down" 我可以看出这是相同的结果,但这是Python中的典型习惯用法吗?如果是这样的话,是不是有一些性能问题运行得很快?还是只需要一次代码检查就可以了?对于我的口味来说,代码是一个非常复杂
if isUp:
return "Up"
else:
return "Down"
甚至:
return "Up" if isUp else "Down"
代码如下:
return isUp and "Up" or "Down"
我可以看出这是相同的结果,但这是Python中的典型习惯用法吗?如果是这样的话,是不是有一些性能问题运行得很快?还是只需要一次代码检查就可以了?对于我的口味来说,代码是一个非常复杂和聪明的东西,但我想它本身并没有什么问题。我认为这真的只是一个“让一切都合在一行”综合征的例子 但我个人会选择第一种形式。不,不是 前几天我不知怎的得了一场车祸 如果构造
val if cond else alt
不太受欢迎(至少受到SO社区的欢迎),首选方案是:
if cond:
val
else:
alt
你可以得出自己的结论。:) 在编写和实现之前,“a和b或c”是用Python表示三元算术的标准方式。这个成语不符合“b”的答案本身就是假的;为了支持一般情况,您可以编写
return (a and [b] or [c])[0]
另一种拼写方法是
return (b,c)[not a]
通过引入bool类型,可以将其改写为
return (c,b)[bool(a)]
(如果不清楚:如果不知道a是bool,则必须转换为bool和not运算符)
今天,如果事物必须是表达式,则应使用条件表达式语法;否则我建议使用if语句。Yikes。根本不可读。对我来说,pythonic意味着易于阅读
return isUp and "Up" or "Down"
听起来像是用perl做的事情。您应该阅读Mark Pilgrim的《深入Python》(第4.6.1节)。事实证明,and/or技巧有一些您应该注意的主要缺陷。替代语法与and/or方法或三元运算符确实有一个区别-始终对这两个值进行求值。如果它们只是变量,那没什么大不了的,但是如果其中有函数调用(特别是有副作用的),这将产生不同。