- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python_2_高级知识分析
Python语言的执行过程1. 解释型语言和编译型语言的区别计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby和Python。因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以效率比较高。随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。2.Python的运行过程其实Python和Java/C#一样,也是一门基于虚拟机的语言。先来从表面上简单地了解一下Python程序的运行过程。当在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。Python也是一门先编译后解释的语言。PyCodeObject和pyc文件我们在硬盘上可以看到pyc文件,但其实PyCodeObject才是Python编译器真正编译成的结果。当程序运行时,编译的结果保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到则直接载入,否则就重复上面的过程。所以说pyc文件其实是PyCodeObject的一种持久化保存方式。pyc的目的是重用。注:Python的解释器认为:只有import进来的模块,才是需要被重用的模块。Python代码规范编码排版:Code Lay-out(1)缩进:缩进一般使用4个空格。(2)Tabs or Spaces:空格是缩进的首选,而不是Tab键。(3)一行的最大长度:72个字符。(4)空白行:顶层函数或类的定义,用2行空白行分隔;类中的函数定义,用1行空白行分隔,相关函数组之间,也可以多加1行额外的空白行;函数内部可用1行空白行分割不同的logical section;(5)源文件的编码:Python3中一般使用UTF-8,Python2中一般使用ASCII码(6)导入Import:一般分开导入:import os import sys,而不是import os, sys;导入顺序:standard library?related third party?local application/library;每一组导入之间,可以用空白行隔开;表达式和语句中的空格有些情况下,应该避免不必要的空格。举几个典型的例子:注释:comment和文档字符串注释一般建议另起一行,而不是在本行的末尾进行注释;命名规范:Naming Convention避免使用:应该避免使用’l’, ‘O’等难辨别字符单个作为变量名;包和模块命名:应该都是简短的、小写的名字;类命名:一般使用大写开头的单词命名,一般采用驼峰法命名,例如FeatureSelect;异常命名:因为exception为类的一种,所以也是使用大写开头的单词命名;全局变量命名:如果只是在本Module中使用,应该使用__all__进行保护;函数命名:应该使用小写单词,单词与单词之间用下划线分割;参数命名:一般用self为instance method的第一个参数,用cls为class method的第一个参数;常数命名:一般使用大写字符,并且单词之间用下划线分割,例如MAX_COUNT;其他建议(1)尽量使用if a is not b:….而不是if not a is b:….(2)尽量使用def定义函数,而不是lambda定义lambda表达式。Yes:def f(x): return 2*xNo:f = lambda x: 2*x(3)尽量使用.startswith或.endswith来检验字符串,而不是字符串slice。Yes: if foo.startswith(bar):No: if foo[:3] == bar:(4)尽量使用isinstance函数来检验数据类型,而不是用type比较:Yes: if isinstance(obj, int):No: if type(obj) is type(1):(5)对于
您可能关注的文档
最近下载
- 金属工艺学 全套课件.ppt VIP
- 外研版(三起)(2024)三年级下册英语Unit 4《What’s your hobby?》第1课时教案 .pdf VIP
- Unit 4 What's your hobby 第三课时教案 2024-2025学年度 外研版英语三年级下册.docx VIP
- 老年患者麻醉管理专家共识.pptx
- 景区运营管理合作协议.doc VIP
- HGT21629-2021管架标准图图集标准.docx VIP
- 保健食品要掌握的全部基本知识【58页】.pptx VIP
- MDCG 2020-7 上市后临床随访 (PMCF) 计划模板中文版.docx VIP
- 基坑土方回填施工策划方案.doc VIP
- 半导体材料课件课件.pptx VIP
文档评论(0)