Python 炫技操作:条件语句的七种写法
作者 | 写代码的明哥
责编 | 屠敏
来源 | Python编程时光
有的人说 Python 入门容易,但是精通难的语言,这点我非常赞同。
Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的。在这些人的眼里,能够写出那些一般开发者看不懂的高级特性,就是高手,就是大神。
但你要知道A / a M T,在团队合作里,炫技是大忌。
为什么这么说呢?我说下1 j T G自己的看法:
越简洁的代码,越清晰的逻辑,就越不容易出错;
在团队合作_ = 6 2 9中,你的代码不只有你在维护,降低别人的阅读/理解代码逻辑的成本是一种良好的品德
简单的代码,只会用到最基本的语法糖,复杂的高级特性,会有更多的依赖(如语言的版本)
在这个v e h y m K N % \"未成年R a o V T\"
下面我列举了五种N V : y M { l这段代码的变异写法,一个比一个还 6 ,单独拿出来比较好理解,放在工程代码里,没用过这些学法的人,一定会看得一脸懵逼,理解了之后,又不经意大呼:卧槽,还可以这样写?,而后就要开始骂街了:这是给人看的代码? (除了第一种之外)& K d | J | $ 5 w
第一种
语法:
<expression 1> if <condition> else <expression 2> 例子
>>> age1 = 20
&gL 4 [ K 3 yt;>> age28 a m Y z = 17
>0 M = s V 4 | &;>>
>>>
>>> msg1 = \"已成年\" if age1 > 18 elsC F &e \"未成年\"
>>> print msg1
已成年
>>>^ g e y t t
>>> msg2_ 8 P q [ D L = \"已成年p | + : -\" if age2 > 18 else \"未成年\"
>>&O B fgt; print msg2
未成年
>>>
第二种
语法
<expression>~ v . : ^ and <on_true> or <on_false>例{ E 5 } Z ` c子
>>> msg1 = age1 > 18 and \"已成年\" or \"未成年\"
>>> msg2 = \"已成年\" if age2 > 18 else \"未成年Q M _\"
>>>
>>> print(msg1)
已成年
>>>
>>> print(` P !msg2)
未成年
第三种C 9 ! ^ *
语法
(\"false\", \"true\")[例4 - z ) d 2 Z ^子
>+ 7 h c;>> msg1 = (\"未成年\", \"未成年\")
>>> print(msg1)
未成年
>>>
>>e B A Y x , 0 p ?;>
>>v - ` o 3 x % W;># . u 0 7 d msg2 = (\^ L S ] ("未成年\", \"未成年\")
>>> print(msg2)
未成年
第四种y q Z
语法
(lambda: <on_false>, lambda:<on_true>)例子
>>> msg1 = (lambda:\"未成年\"$ L 6 j o k o P, lambda:\"已成年\- 8 B Z u 3 J 0 [")
>>> print(msg1)
已成年
>>>
>>> msg2 = (lambda:\"未成年\u J b _ 4 c u s a", lambda:\"已成年\")
>>>% U G b : ~ u Q H print(msg2G a Q c)
未成年
第五种
语法:
{True: <on_true>, Fa` N # $ Jlse: <oS [ [ d 9 S kn_false&gV Y `t;}例子:
>>> msg1 = {True: \"已成年\", False: \"未成年\"}
>>> print(msg1)
已成年
>>>d = z
>>> msg2 = {True: \"已成年\", False: \"未成年\"}
>k ` g , O j 9 m o>> print(msg2)
未成年
第六种
语法
((<condition>) and (<on_true>,) oo 9 Cr (<on_false>M R ; a };,))例子
&gj B y S Z Ot;>&g; : 3 / dt; mq + `sg1 = (. A K O ! %(age1 > 18) and (\"已成年\",) or (\"未成年\",))
>>> pri* ( } h F Y ent(msg1)
已成年
>>>
>>> msg2 =v { 9 g ((age3 * v B B q2 &gR H E b _ p :t; 18) and (- y 0 ] { 8\"已成x n , I @ z I年\",) or (\"未成年\",$ : A P A r W ?))
>>> print(md 7 9sg2)
未成年以上代码,都比较简单,注意看都能看懂,我就不做解释了。
看到这里,有没有涨姿势了,学了这么久的 Python ,这么多骚操作,还真是活久见。。这六种写法里,我最推荐使用的是第一种,自己也经常在用,简洁直白,代码行还少。而其他的写法虽然能写,但是不会用,也不希望在我余生里碰到会在公共代码里用这些写法的同事。