Odd*_*ing 7 python coding-style
我刚刚在一些开源Python中遇到过这个成语,我对我的饮料感到窒息.
而不是:
if isUp:
return "Up"
else:
return "Down"
Run Code Online (Sandbox Code Playgroud)
甚至:
return "Up" if isUp else "Down"
Run Code Online (Sandbox Code Playgroud)
代码阅读:
return isUp and "Up" or "Down"
Run Code Online (Sandbox Code Playgroud)
我可以看到这是相同的结果,但这是Python中的典型成语吗?如果是这样,它是否会快速运行?或者它只是一次性需要代码审查?
Mar*_*wis 17
如果在Python中,在编写和实现PEP 308之前,"a和b或c"成语是表达三元算术的规范方式.这个成语失败,"b"答案本身就是假的; 为了支持一般情况,你可以写
return (a and [b] or [c])[0]
Run Code Online (Sandbox Code Playgroud)
另一种拼写方式是
return (b,c)[not a]
Run Code Online (Sandbox Code Playgroud)
随着bool类型的引入,可以改写为
return (c,b)[bool(a)]
Run Code Online (Sandbox Code Playgroud)
(如果不清楚:如果不知道bool已转换为bool和not运算符是必要的)
今天,如果事物必须是表达式,则应该使用条件表达式语法; 否则我建议使用if语句.