前言:
Python使用缩进来标识语句块, 来表明代码之间的逻辑层级关系, 但有时候一些简单的代码逻辑确写了好几行, 代码看起来既不简洁也不优雅.
其实Python提供了更贴近自然语言的语法, 可以写出更高可读性的代码.
相关文章: 【列表表达式】【海象运算符】
1. 条件表达式(三元运算符)
日常编写代码时, if条件语句应该是使用最频繁的了, 但是当条件语句之后的代码相当简短的时候, Python代码会变得很丑
1.1 ☹️丑陋的写法
if a > b:
m = a
else:
m = b
1.2 😃条件表达式
语法如下, 将if 和else写到一行, 先执行condition_expr, 若执行结果为True则执行 expr1, 执行结果为False则执行expr2
将1.1 中的代码使用条件表达式写法如下:
m = a if a < b else b
1.3 🙄两种花里胡哨的写法
利用Python中的一些特性, 也可以实现三元操作符的结果, 但是牺牲了可读性, 更偏向炫技, 不建议在代码中使用, 这里也做一个介绍.
一种方式是利用列表list中定位元素的一个特性,
list[ True ] == list[ 1 ],
list[ False ] == list[ 0 ]
In [1]: data = [1,2,3,4,5]
In [2]: data[True]
Out[2]: 2
In [3]: data[False]
Out[3]: 1
将condition_expr放到[]中,执行结果为 False 则定位到 val1, 执行结果为 True 则定位到val2
将1.1 中的代码使用列表实现写法如下:
In [1]: a, b = 3, 5
In [2]: m = [a, b][a > b] # 即, m = [a, b][False]
In [3]: m
Out[3]: 3
第二种方式是利用逻辑运算表达式 and 和 or , 例如语句
expr1 and expr2
只有expr1 返回为True的时候, 才会执行expr2.
expr1返回False的之后, expr2不会执行
expr1 or expr2
只有expr1 返回为False的时候, 才会执行expr2.
expr1返回True的之后, expr2不会执行
将1.1 中的代码使用条件表达式写法如下:
m = a<b and a or b
总结:
if ... else ... 语句中, 如果条件分支中的代码较少, 如赋值操作语句, 优先使用条件表达式完成
花里呼哨不可取, 会对代码的可读性带来挑战
版权归原作者 be5yond 所有, 如有侵权,请联系我们删除。