Python学习笔记——Python编程规范与代码优化建议

(1)缩进

类定义、函数定义、选择结构、循环结构、with块,行尾的冒号表示缩进的开始。

python程序是依靠代码块的缩进来体现代码之间的逻辑关系的,缩进结束就表示一个代码块结束了。

同一个级别的代码块的缩进量必须相同。

一般而言,以4个空格为基本缩进单位。

(2)每个import语句只导入一个模块,最好按标准库、扩展库、自定义库的顺序依次导入。

(3)最好在每个类、函数定义和一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一个空格。

(4)尽量不要写过长的语句。如果语句过长,可以考虑拆分成多个短一些的语句,以保证代码具有较好的可读性。如果语句确实太长而超过屏幕宽度,最好使用续行符(line continuation character)“\”,或者使用圆括号将多行代码括起来表示是一条语句。

(5)虽然Python运算符有明确的优先级,但对于复杂的表达式建议在适当的位置使用括号使得各种运算的隶属关系和顺序更加明确、清晰。

(6)注释

 以符号#开始,表示本行#之后的内容为注释。

 包含在一对三引号'''...'''或"""..."""之间且不属于任何语句的内容将被解释器认为是注释。

(7)在开发速度和运行速度之间尽量取得最佳平衡。

内置对象运行速度最快,标准库对象次之,用C或Fortran编写的扩展库速度也比较快,而纯Python的扩展库往往速度慢一些。

在开发项目时,应优先使用Python内置对象,其次考虑使用Python标准库提供的对象,最后考虑使用第三方扩展库。

(8)根据运算特点选择最合适的数据类型来提高程序的运行效率。

如果定义一些数据只是用来频繁遍历并且关心顺序,最好优先考虑元组。

如果需要频繁地测试一个元素是否存在于一个序列中并且不关心其顺序,尽量采用集合。

列表和元组的in操作的时间复杂度是线性的,而对于集合和字典却是常数级的,与问题规模几乎无关。

(9)充分利用关系运算符以及逻辑运算符and和or的惰性求值特点,合理组织条件表达式中多个条件的先后顺序,减少不必要的计算。

(10)充分利用生成器对象或类似迭代对象的惰性计算特点,尽量避免将其转换为列表、元组等类型,这样可以减少对内存的占用,降低空间复杂度。

(11)减少内循环中的无关计算,尽量往外层提取。

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

以动手实践为荣,以只看不练为耻。

以打印日志为荣,以单步跟踪为耻。

以空格分隔为荣,以制表分隔为耻。

以单元测试为荣,以手工测试为耻。

以代码重用为荣,以复制粘贴为耻。

以多态应用为荣,以分支判断为耻。

以Pythonic为荣,以冗余拖沓为耻。

以总结思考为荣,以不求甚解为耻。

发布了152 篇原创文章 · 获赞 124 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_44762986/article/details/104724210