前言: 

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 ... 语句中, 如果条件分支中的代码较少, 如赋值操作语句,  优先使用条件表达式完成

花里呼哨不可取, 会对代码的可读性带来挑战

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐