在本文中我总结一些提升Python编程性能的心得,分享给大家。
坏习惯1
把重复操作作为参数放到循环语句里。如:
坏习惯
这样的编程性能不好,因为每次循环都浪费时间计算字符串String的长度上。如果把这个值做一次保存,可以用更为高效的方式重写上述循环操作:
好习惯
它们运行结果一样,如下:
运行结果
坏习惯2
用for语句生成列表。for语句优点是通俗易懂,速度比while语句块,但多重循环时,for语句可读性差,不够简练,当你做大项目实施时,应该尽量避免。如:
坏习惯
构造一个简单列表,上述代码花了3行代码,其实用列表解析,一行代码足够:
好习惯
也可以使用Lambda表达式(参考我的文章《Python中的Lambda表达式》),如:
好习惯
它们的运行结果一样,如下:
运行结果
列表解析很好用。比如要生成一个矩阵,需要两个for语句才能实现,可读性差,容易出错。用列表解析,一行代码即可,如:
更好习惯
运行结果如下:
运行结果
坏习惯3
读取文件后,忘记关闭文件对象。下面代码实现读取文件的第一行并打印出来。
坏习惯
上述代码打开文件,读取了数据,但忘记关闭文件对象,占用内存资源,特别是在多进程编程中,应及时关闭文件对象。正确的做法为:这里还是要推荐下小编的Python学习裙:‘’五八八,零九零,九四二‘’不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。
好习惯
还有一个更好习惯,专门给那些健忘症的人使用的,它能自动关闭文件对象。
更好习惯
在Python中,由于文件对象是可迭代对象,因此可以在不打开文件对象的情况读取数据(节省内存空间),下面的代码是更好更好习惯。
更好更好习惯
它们的运行结果一样,如下:
运行结果
坏习惯4
假设有一个大文件,文件大小超过计算机内存,但我们只需这个大文件的前5行数据,很多人使用以下编程方式,这时往往会产生内存溢出,使计算机变成砖头。
坏习惯
上述代码中使用readlines函数读取大文件,会一次性把大文件加载到计算机内存,容易产生问题。我们的目的是要这个大文件的前5行,因此没有必要加载整个大文件。正确的编程方法是使用readline函数,每次只读一行,代码如下:
好习惯
利用列表解析,还有更好的编程,代码如下:
更好习惯
由于文件对象是可迭代对象,甚至不需要用readline函数,更高效的方法是利用可迭代对象的内置方法__next__()实现,实际上readline函数是调用内置方法__next__()实现迭代,自然原始方法__next__()更有效。代码如下:
更好更高效习惯
它们的输出都一样:
运行结果
坏习惯5
最坏习惯是,还在苦苦坚持使用Python2.7版本及以下的软件,甚至把Python2.7的下面这套东西搬到Python3里,以显示自己的专业水准。果断放弃Python2,特别是新手,更应该毫不犹豫地选择Python3。
Python2头文件
总结
Python编程和开车一样,只是一种技能,选择一辆自动波轿车,果断放弃Python2,出发目的地之前,应该花点时间规划好路线,既省时间又省油,匆忙上路易出事故。切记:
能用for语句的地方,不要用while语句。一般来说,for语句的速度是while语句的两倍以上。
能用列表解析的地方,不要用for语句。
能用内置方法的地方,不要用引用该内置方法的方法。
能用readline函数的地方,不要用readlines函数。
打开对象,记得关闭对象。一定要使用括号调用函数。f.close()关闭文件是对的,f.close关闭文件是错的。
不要把不必要的数据写进内存。
选择合适的算法、合适的数据结构、合适的工具,单台计算机也可以处理大数据。
循环语句里不要重复计算同样的东西。
领取专属 10元无门槛券
私享最新 技术干货