python解释器
官方CpythonC语言开发,最广泛的Python解释器IPython一个交互式,功能增强的CpythonPyPyPython语言写的Python解释器,JIT技术,动态编译Python代码JythonPython的源码编译成Java的字节码,跑在JVM上IronPython与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码
版本区别
2.X和3.X区别语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3.x中意思是函数的两个参数整数,例如1/2和1//2,3.x版本中/为自然除3.x中raw_input重命名为input,不在使用raw_inputround函数函数,在3.x中i.5的整数变为距离最近的偶数字符串统一使用Unicode异常的捕获、抛出的语法改变
遵循PEP8风格指南
空白:
python中的空白(whitespace)会影响代码的含义。python程序员使用空白的时候尤其在意,因为它们还会影响代码的清晰程度。使用space(空格)来表示缩进,而不要用Tab(制表符)和语法相关的每一层缩进都用4个空格来表示每行的字符数不应超过79对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别之上再加4个空格文件中的函数与类之间应该用两个空格隔开在同一个类中,各方法之间应该用一个空格隔开在使用下标来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只写一个就好
命名:
PEP8提倡采用不同的命名风格来编写python代码中的各个部分,以便在阅读代码时可以根据这些名称看出它们在python语言中的角色函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连,例如lowercase_underscore受保护的实例属性,应该以单个下划线开头,例如_leading_underscore私有的实例属性,应该以两个下划线开头,例如__double_leading_underscore类与异常,应该以每个单词首字母均大写的形式来命名,例如CapitalizedWord模块级别的常量,应该全部采用大写字母来拼写,各单词之间以下划线相连,例如ALL_CAPS类中的实例方法(instance method),应该把首个参数命名为self,以表示该对象自身类方法(class method)的首个参数,应该命名为cls,以表示该类自身
表达式和语句:
《The Zen of python》(python之禅)中说:“每件事都应该有直白的做法,而且最好只有一种。”PEP8在制定表达式和语法的风格时,就试着体现了这种思想。采用内联形式的否定词,而不要把否定词放在整个表达式的前面,例如,应该写if a not b 而不是if not a is b不要通过检测长度的办法(如if len(somelist) == 0)来判断somelist是否为[]或”等空值,而不是采用if not somelist这种写法来判断,它会假设:空值将自动评估为False检测somelist是否为[1]或'hi'等非空值时,也应如此,if somelist语句默认会把非空的值判断为True不要编写单行的if语句、for循环、while循环及except复合语句,而是应该把这些语句分成多行来书写,以示清晰import语句应该总是放在文件开头引入模块的时候,总是应该使用绝对名称,而不应该根据当前模块的路径来使用相对名称。例如,引入bar包中的foo模块时,应该完整地写出from bar import foo,而不应该简写成import foo如果一定要以相对名称来编写import语句,那就采用明确的写法:from.import foo文件中的那些import语句应该按顺序划分成三个部分,分别表示标准库模块、第三方模块以及自用模块。在每一部分,各import语句应该按模块的字母顺序来排列
要点
当编写python代码时,总是应该遵循PEP8风格指南与广大python开发者采用同一套代码风格,可以使项目更利于多人协作采用一致的风格来编写代码,可以令后续的修改工作变得更为容易