Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不仅运行速度慢,代码读起来也费尽,给人一种拖泥带水的感觉,过段时间连自己也读不懂。
要写出 Pythonic(优雅的、地道的、整洁的)代码,还要平时多观察那些大牛代码,Github 上有很多非常优秀的源代码值得阅读,比如:requests、flask、tornado,笔者列举一些常见的 Pythonic 写法,希望能给你带来一点启迪。ps:我自己总结一些pythonic代码
1、变量交换
大部分编程语言中交换两个变量的值时,不得不引入一个临时变量
>>> a = 1 # 初学者思维 >>> b = 2 >>> tmp = a >>> a = b >>> b = tmp
pythonic
>>> a, b = b, a # pythonic思维
是否优雅基本属于哲学问题了,比如大括号和缩进你习惯哪个的问题
非要量化的话,差不多就是在实现相同的功能,py代码成本较小,写起来心智负担不大,当然前提是都已经掌握比较好,如果你已经习惯C++的模式,和刚换py相比自然要有一定适应期
比如, 我们希望希望检测"一段string是否以特定的字符串结尾?", 通常我们使用:
十分丑陋是吧? 如果我们检测变量needle是否是以下特定字符串之一的话, 会这样写:
但是, 我们无法在 endswith function 中使用 in, 但我们换一种想法, 我们需要检查的其实是"一段string的结尾是否是以下字符串的任意一个?", 我们会发现python有内部函数any, 于是我们的代码可以改为:
相信很多读者在此会不同意我的做法, 或者有更好的写法存在. 但这已经不重要. 我明白你们大多数都会使用类似的写法面对这一相似的问题. 我真正的目的其实是展示一下Python的优雅之处.