PEP8-Python编码规范PEP8-Python编码规范PEP8的官⽅⽂档:使⽤IDE:pycharm(默认检查代码规范)⼀:代码布局1.缩进:每个缩进级别使⽤4个空格。def__init__(self,key,**redis_kwargs):self.__db=redis.Redis(**redis_kwargs)self.key=key2制表符or空格空格是⾸选的缩进⽅法。Python3不允许混合使⽤制表符和空格来缩进。Python2代码缩进与制表符和空格的混合应转换为使⽤空格专有。有研究显⽰:使⽤空格缩进的程序员的薪资⽐使⽤制表符缩进的程序员的薪资多8%。所以⼀定要⽤空格缩进呀。3每⾏代码的最⼤长度:将所有⾏限制为最多79个字符。Python标准库是保守的,需要将⾏限制为79个字符(⽂档字符串/注释为72)。4空⽩⾏:⽤两个空⽩⾏分隔顶层函数和类定义。类中的⽅法定义⽤⼀个空⾏分隔。可以使⽤额外的空⽩⾏(节省空间)来分隔相关功能组。在⼀堆相关的单⾏程序(例如⼀组虚拟执⾏程序)之间可能会省略空⽩⾏。在函数中使⽤空⾏来节省逻辑部分。恰当的使⽤空⽩⾏可以提⾼代码的可读性。5源⽂件编码:核⼼Python发⾏版中的代码应该始终使⽤UTF-8(或Python2中的ASCII)。使⽤ASCII(Python2)或UTF-8(Python3)的⽂件不应该有编码声明。但是在Python2中使⽤UTF-8编码就需要有编码声明:#-*-coding:utf-8-*-#!/usr/bin/envpython2上⾯两⾏代码常放在Python2代码中的开头,第⼀⾏意思是指定源⽂件以utf-8格式编码,第⼆⾏意思是指定源⽂件的python解释器在环境变量中去寻找。6导⼊库函数:若是导⼊多个库函数,应该分开依次导⼊:importrequestsimportcsv导⼊总是放在⽂件的顶部,在任何模块注释和⽂档字符串之后,在模块全局变量和常量之前。"""⼀种简单的⽅式是使⽤模块json来存储数据"""#使⽤函数json.dump()来存储数据#函数json.dump()接受两个对象:要存储的数据以及可⽤于存储数据的⽂件对象importjsonnumbers=[2,3,5,7,11,13]filename="numbers.json"#使⽤⽂件扩展名.json来指出⽂件存储的数据为JSON格式withopen(filename,"w")asfile_object:#以写⼊模式打开⽂件json.dump(numbers,file_object)导⼊应按以下顺序进⾏:①标准库导⼊②有关的第三⽅库进⼝③本地应⽤程序/库特定的导⼊importsysimportpygamefrombulletimportBulletfromalienimportAlienfromtimeimportsleep从包含类的模块中导⼊⼀个类时,通常可以这样写:fromsettingsimportSettingsfromshipimportShipimportgame_functionsasgffrompygame.spriteimportGroupfromgame_statsimportGameStatsfrombuttonimportButtonfromscoreboardimportScoreboard应避免通配符导⼊(import*),因为它们使名称空间中出现的名称不清楚⼆:字符串1在Python中,单引号字符串和双引号字符串是相同的。这个PEP没有为此提出建议。2对于三引号字符串,常⽤三个双引号作⽂档字符串,⽂档字符串常⽤在模块的开端⽤以说明模块的基本功能,或紧跟函数定义的后⾯⽤以说明函数的基本功能,关于三引号字符串更多具体的细节,可以查阅其官⽅⽂档:]()三:表达式和语句中的空格1.在以下情况下避免⽆关的空格:①在括号或⼤括号内:Yes:spam(ham[1],{eggs:2})No:spam(ham[1],{eggs:2})②在尾随逗号和后⾯的右括号之间:Yes:foo=(0,)No:bar=(0,)③在逗号,分号或冒号前⾯:Yes:ifx==4:printx,y;x,y=y,xNo:ifx==4:printx,y;x,y=y,x④紧接在开始函数调⽤的参数列表的开括号之前:Yes:spam(1)No:spam(1)⑤紧接在开始括号之前,开始索引或切⽚:Yes:dct['key']=lst[index]No:dct['key']=lst[index]⑥在⼀个赋值(或其他)运算符周围有多于⼀个的空间来对齐它:Yes:x=1y=2long_variable=3No:x=1y=2long_variable=32.其他建议:①总是围绕这些⼆元运算符在两侧使⽤⼀个空格:赋值(=),扩充赋值(+=,-=等),⽐较(==,<,>,!=,<>,<=,>=,在,不在,是,是不是),布尔值(和,或,不)②⽤于指⽰关键字参数或默认参数值时,不要在=符号周围使⽤空格。Yes:defcomplex(real,imag=0.0):returnmagic(r=real,i=imag)No:defcomplex(real,imag=0.0):returnmagic(r=real,i=imag)四:注释1代码更改时,相应的注释也要随之更改。2块注释:块注释通常适⽤于...