提升Python程序性能的7个习惯转载
原创♚
出发地:知乎,出发地:知乎。出发地:知道https://zhuanlan.zhihu.com/p/38160586
作者:爱coding,一位会编程的核工程师。,会编程的核工程师。,会编程的核工程师。,会编程的核工程师。
个人博客地址。个人博客地址。zhihu.com/people/zhong-yun-75-63
掌握一些技巧最大化获得一些技巧最大化掌握一些技巧最大化Python程序性能,也避免了不必要的资源浪费。
1,使用局部变量,使用局部变量,使用局部变量
尝试使用局部变量而不是全局变量:易于维护、提高性能并节省内存。
将模块命名空间中的变量替换为局部变量,例如 ls = os.linesep一方面,它可以提高程序的性能,使局部变量的查找速度更快。一方面,它可以提高程序的性能,可以更快地找到局部变量;另一方面,可以使用较短的标识符来替换冗长的模块变量,提高可读性。
2,减少函数调用次数,减少函数调用次数,减少函数调用
在确定对象的类型时,使用isinstance()最佳,使用对象类型标识(最佳,使用对象类型标识(id())是第二个最好的方法,使用对象值()其次,使用对象值(),后跟对象值(type())是最差的。)是下一个最好的事情。
#判断变量num无论是整型还是整型,无论是整型还是整型
type(num) == type(0) #调用函数三次,调用函数三次,调用函数三次
type(num) is type(0) #身份比较
isinstance(num,(int)) #调用函数一次调用函数一次调用函数一次
不要将重复操作的内容作为参数放在循环条件中,避免重复操作。
#每个循环需要重新执行每个循环需要重新执行每个循环len(a)
while i < len(a):
statement
#len(a)仅执行一次仅执行一次仅执行一次
m = len(a)
while i < m:
statement
如果需要使用模块来使用模块,则使用模块来使用模块XA函数中的函数或对象或函数中的对象或A函数中的对象或Y应该直接使用的应该直接使用应该直接使用from X import Y,而不是import X; X.Y。这样,在使用Y当解释器不必首先查找X模块,然后是X在模块的词典中查找模块的词典Y)。
3映射替代条件搜索映射替代条件查找
映射(例如,映射(例如dict等)的搜索速度比条件语句(如if等)。Python中也没有select-case语句。
#if查找
if a == 1:
b = 10
elif a == 2:
b = 20
...
#dict查找,更好的性能查找,更好的性能查找和更好的性能
d = {1:10,2:20,...}
b = d[a]
4,直接迭代序列元素,直接迭代序列元素
对序列(str、list、tuple等等),直接迭代序列元素比迭代元素的索引更快。
a = [1,2,3]
#迭代元素
for item in a:
print(item)
#迭代索引
for i in range(len(a)):
print(a[i])
5,使用生成器表达式生成器表达式而不是列表解析
列表分析(列表解析(列表分析(list comprehension),则会生成整个列表,这将对大量数据的迭代产生负面影响。
另一方面,生成器表达式生成器表达式则不会。它不是实际创建列表,而是返回一个生成器,该生成器在需要时生成值(延迟计算),并且对内存更加友好。
#计算文件f非空字符数非空字符数中的非空字符数
#生成器表达式生成器表达式
l = sum([len(word) for line in f for word in line.split()])
#列表解析
l = sum(len(word) for line in f for word in line.split())
6,先编译后调用,先编译后调用
使用eval()、exec()当函数执行代码时,最好调用代码对象(提前通过compile()编译成字节码的函数),而不是直接调用str这可以通过避免重复编译过程的多次执行来提高程序性能。
正则表达式模式匹配类似,最好先将正则表达式模式编译为regex对象(通过对象(通过对象(通过re.complie()函数),然后执行比较和匹配。
7,模块编程习惯,模块编程习惯
模块中的最高级别模块中的最高级别模块中的顶级Python语句(没有缩进的代码)将被导入模块(import)当它们被执行时(无论它们是否真的有必要)。因此,您应该尽量将模块的所有功能代码放入函数中,包括与主程序相关的功能代码,这些代码也可以放入main()函数时,主程序本身会调用main()函数。
这可以在模块中完成。它可以在模块中找到。它可以在模块的main()在函数中编写测试代码。在主程序中,测试 name 如果值为 main (表示模块正在直接执行),然后调用main()用于测试的函数;如果是模块名称(表示调用了该模块),则不执行测试。
推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题 | 从零开始学习从零基础学习从零基础学习8个月的Python | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 | 从万众期待到口碑惨败!唐探3令人失望 | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!易于修复表单和水印!简单的表格和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!| 再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除