加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

晋升Python措施机能的7个风俗

发布时间:2019-02-02 03:22:33 所属栏目:建站 来源:爱coding
导读:把握一些能力,可只管进步Python措施机能,也可以停止不须要的资源挥霍。 1、行使局部变量 只管行使局部变量取代全局变量:便于维护,进步机能并节减内存。 行使局部变量替代模块名字空间中的变量,譬喻 ls = os.linesep。一方面可以进步措施机能,局部变

 晋升Python措施机能的7个风俗

把握一些能力,可只管进步Python措施机能,也可以停止不须要的资源挥霍。

1、行使局部变量

只管行使局部变量取代全局变量:便于维护,进步机能并节减内存。

行使局部变量替代模块名字空间中的变量,譬喻 ls = os.linesep。一方面可以进步措施机能,局部变量查找速率更快;另一方面可用简短标识符更换冗长的模块变量,进步可读性。

2、镌汰函数挪用次数

工具范例判定时,回收isinstance()最优,回收工具范例身份(id())次之,回收工具值(type())较量最次。 

  1. #判定变量num是否为整数范例  
  2.    type(num) == type(0) #挪用三次函数  
  3.    type(num) is type(0) #身份较量  
  4.    isinstance(num,(int)) #挪用一次函数 

不要在一再操纵的内容作为参数放到轮回前提中,停止一再运算。 

  1. #每次轮回都必要从头执行len(a)  
  2.    while i < len(a):  
  3.        statement  
  4.    #len(a)仅执行一次  
  5.    m = len(a)  
  6.    while i < m:  
  7.        statement 

如需行使模块X中的某个函数或工具Y,应直接行使from X import Y,而不是import X; X.Y。这样在行使Y时,可以镌汰一次查询(表明器不必起首查找到X模块,然后在X模块的字典中查找Y)。

3、回收映射更换前提查找

映射(好比dict等)的搜刮速率远快于前提语句(如if等)。Python中也没有select-case语句。

  1. #if查找  
  2. if a == 1:  
  3.     b = 10  
  4. elif a == 2:  
  5.     b = 20  
  6. ...  
  7. #dict查找,机能更优  
  8. d = {1:10,2:20,...}  
  9. b = d[a] 

4、直接迭代序列元素

对序列(str、list、tuple等),直接迭代序列元素,比迭代元素的索引速率要更快。 

  1. a = [1,2,3]  
  2.    #迭代元素  
  3.    for item in a:  
  4.        print(item)  
  5.    #迭代索引  
  6.    for i in range(len(a)):  
  7.       print(a[i]) 

5、回收天生器表达式更换列表理会

列表理会(list comprehension),会发生整个列表,对大量数据的迭代会发生负面效应。

而天生器表达式则不会,其不会真正建设列表,而是返回一个天生器,在必要时发生一个值(耽误计较),对内存越发友爱。

  1. #计较文件f的非空字符个数  
  2.   #天生器表达式  
  3.   l = sum([len(word) for line in f for word in line.split()])  
  4.   #列表理会  
  5.   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()函数,举办测试;假如为模块名字(暗示模块是被挪用),则不举办测试。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读