Python 代码性能优化技巧
众所周知,程序的性能好坏影响着用户体验。
所以性能是留住用户很重要的一环。
Python 语言虽然能做很多事情,但是有一个不足之处,那就是执行效率和性能不够理想。
因此,更有必要进行一定的代码优化来提高 Python 程序的执行效率。
本文章主要是输出自己在 Python 程序优化的经验。
1.尽量使用内置函数
Python 的标准库中有很多内置函数,它们的运行效率都很高。
因为很多标准库是使用 C 语言编写的。
Pyhton 的内置函数有:
原图比较大,排版原因可能导致字体看不清。
在公众号后台中,回复【内置函数】即可获取高清图片。
2.拼接字符串
运算符 “+
“ 不仅能用于加法运算,还能做字符串连接。
但是这种效率不是很高。
在 Python 中,字符串变量在内存中是不可变的。
如果使用 “+
“ 拼接字符串,内存会先创建一个新字符串,然后将两个旧字符串拼接,再复制到新字符串。
推荐使用以下方法:
2-1.使用 “%” 运算符连接
这种方式有点像 C 语言中 printf 函数的功能,使用 “%s
“ 来表示字符串类型参数,再用 “%
“ 连接一个字符串和一组变量。
1 | fir = 'hello' |
2-2.使用 format() 格式化连接
这种格式化字符串函数是 Python 特有的,属于高级用法。
因为它威力强大,不仅支持多种参数类型,还支持对数字格式化。
1 | fir = 'hello' |
上述代码使用隐式的位置参数,format() 还能显式指定参数所对应变量的位置。
1 | fir = 'hello' |
2-3.使用 join() 方式
这种算是技巧性办法。join() 方法通常是用于连接列表或元组中的元素。
1 | list = ['1', '2', '3'] |
3.使用 generator
generator 翻译成中文是生成器。生成器也是一种特殊迭代器。
它其实是生成器函数返回生成器的迭代。
生成器算是 Python 非常棒的特性。
它的出现能帮助大大节省些内存空间。
假如我们要生成从 1 到 10 这 10 个数字,采用列表的方式定义,会占用 10 个地址空间。
采用生成器,只会占用一个地址空间。
因为生成器并没有把所有的值存在内存中,而是在运行时生成值。
所以生成器只能访问一次。
1 | # 创建一个从包含 1 到 10 的生成器 |
4.死循环
虽然使用While True
和while 1
都能实现死循环,但是while 1
是单步运算,所以效率会高一点。
1 | # 推荐 |
5.巧用多重赋值
交换将两个变量的值,我们会立马想到应用一个第三方变量的方法。
1 | # 将 a 和 b 两个值互换 |
Python 素有优雅的名声,所以有一个更加优雅又快速的方法,那就是多重赋值。
1 | # 将 a 和 b 两个值互换 |
6.列表的插入与排序
Python 标准库中有个 bisect
模块是内置模块,它实现了一个算法用于插入元素到有序列表。
在一些情况下,这比反复排序列表或构造一个大的列表再排序的效率更高。
1 | import bisect |
7.尽量使用局部变量
Python 检索局部变量比检索全局变量快。因此, 尽量少用 “global
“ 关键字。