最先推荐一个称作black的库, 它被用来把代码格式弄成符合pep8规范的代码。一 代码编排1 进行缩进, 采用 4 个空格来形成缩进, 此功能编辑器均能够予以完成, 绝不使用 Tap, 而且更不可将 Tap 与空格交叉混合使用。尽量让 每行的范围的最大长度设定为79 , 倘若换行时 可以采用反斜杠, 最好是使用圆括号。换行标记位置于在操作符的后面敲回车。3类与top - level函数定义之间要空出两行, 类之中的方法定义之间需空一行, 函数内部逻辑不相关的段落之间得空一行, 其他地方尽量不要再有空行。二 文档编排模块内容之顺序为, 模块说明以及, 其他定义。当中部分, 依标准、三方以及自身编写顺序逐个排放, 其间空出一行呐。2 不要在一句中多个库比如 os, sys不推荐。倘若选取from XX XX来引用库, 那么能够省略‘.’, 然而皆有可能出现命名冲突的状况, 在这种时候便需要采用XX。三 空格的使用总体原则避免不必要的空格。1 各种右括号前不要加空格。2 逗号、冒号、分号前不要加空格。3 函数的左括号前不要加空格。如Func(1)。4 序列的左括号前不要加空格。如list。5 操作符左右各加一个空格不要为了对齐增加空格。6 函数默认参数使用的赋值符左右省略空格。7 不要将多句语句写在同一行尽管使用‘’允许。四 注释在总的原则方面, 那种错误的注释, 其效果还比不上没有注释, 所以, 当一组代码出现了某些变化的时候, 我们要做的第一件事情, 就是要去更改注释务必使用英文来搞注释哩, 最优当属完整的句子, 开头字母得大写, 句子末尾要有终止符号, 终止符号后面跟两个空格呀 , 开启下一句。要是是短语, 可以省去终止符号。1块注释, 是在一段代码之前所增添的注释, 需在‘#’之后加上一空格, 段落之间是以仅有‘#’的行来进行间隔, 就如同这样:: .Input : : None进行2行注释, 于一句代码之后添加注释。举例来讲: x等于x加上1, 此为#x后面是注释内容。但是这种方式尽量少使用。3 避免无谓的注释。五 文档描述对于所有的, 那些属于共有的模块、函数、类以及方法都需要去写注释而那些并非共有的内容, 虽然没有写注释的必要, 但是呢, 也能够进行注释的撰写, 注释要写在def的下一行。2 如果要换行参考如下例子,详见PEP 257 aplotz says to the first.六 命名规范总得来讲的原则是, 新编写的代码务必要按照接下来的命名风格去做, 现有的库的编码尽可能维持风格。尽量单独去使用, 小写字母“l”, 大写字母“O”这类容易混淆的字母。2 模块命名尽量短小使用全部小写的方式可以使用下划线。3 包命名尽量短小使用全部小写的方式不可以使用下划线。4 类的命名使用的方式模块内部使用的类采用的方式。5 异常命名使用Error后缀的方式。全局变量, 尽量仅在模块之内具备有效性, 就如同C语言里的那般。实现的方法存在两种, 其一为这种机制, 其二是前缀一个下划线。7 函数命名使用全部小写的方式可以使用下划线。8 常量命名使用全部大写的方式可以使用下划线。9类的属性, 也就是方法以及变量, 其命名采用全部小写的形式, 并且能够使用下划线。九类的属性存在三种作用域, 有 non-和 API, 能够理解为 C里的, , , 在 non-属性之前, 前缀一条下划线。有 11 类的属性, 要是它和关键字名字出现冲突的情况, 那就后缀一下划线, 尽量别采用缩略等其他的方式。存在这样的情况, 对于某些类当中特定的属性而言, 鉴于要以防万一和子类的属性命名产生冲突, 所以要在这些属性的前面加上两条下划线作为前缀, 比如说在类Foo里面去声明__a的时候, 当进行访问操作时, 只能够通过Foo.这种方式来进行, 以此达到避免产生歧义的目的。然而要是子类的名称同样也叫做Foo的话, 那么就全然没有办法了。十三类的那个方法的头一个参数势必得为官已斧, 表示自家, 然而静态方法的头一个参数势必要为官已斧, 表示类已斧。七 编码建议编码之时, 考虑到其他实现所存在的效率等方面的问题, 举例来说, 运算符‘’在当中效率是很高的, 然而在都是中效率却极为低, 所以应当采用.join()这样的方式。尽量去运用‘is’‘is not’来替换‘’, 像是若x is not None这种情况要好过if x , 这是要尽可能达成的。对3进行使用, 使用基于类的异常, 在这种情况下, 每个模块或者包都存在着自身的异常类, 而此一异常类来自于继承。4 异常中不要使用裸露的后跟具体的。5 异常中try的代码尽可能少。比如try:value :(key)else:(value)要优于try:Too broad!():Will also catch by ()(key)6 运用()以及()去替代切片来开展序列前缀或者后缀的查验。比如说:Yes: if foo.(bar):优于No: if foo bar:7 使用()比较对象的类型。比如Yes: if (obj, int): 优于No: if type(obj) is type(1):8 判断序列空或不空有如下规则Yes: if not seq:if seq:优于No: if len(seq)if not len(seq)9 字符串不要以空格收尾。10 二进制数据判断使用 if 的方式。八 PEP8 格式化ctrlaltL 快捷键格式化其它参考文章常用PEP8编码规范和建议经验分享PEP8 编码规范中文版D7.MiNgChEn.PRo0605.MiNgChEn.PRo59.MiNgChEn.PRo746B.MiNgChEn.PRo01E3.MiNgChEn.PRoC4D.MiNgChEn.PRoB1C1.MiNgChEn.PRo55AC.MiNgChEn.PRoD4D.MiNgChEn.PRoAF7C.MiNgChEn.PRo082.MiNgChEn.PRo74.MiNgChEn.PRo146.MiNgChEn.PRo451.MiNgChEn.PRo6EA8.MiNgChEn.PRo665.MiNgChEn.PRo14.MiNgChEn.PRo46F.MiNgChEn.PRoD5C.MiNgChEn.PRoCA58.MiNgChEn.PRo75.MiNgChEn.PRo03.MiNgChEn.PRo69.MiNgChEn.PRoAAA4.MiNgChEn.PRoB21.MiNgChEn.PRo5347.MiNgChEn.PRoE.MiNgChEn.PRoFC3D.MiNgChEn.PRo3CFA.MiNgChEn.PRo738.MiNgChEn.PRo4B.MiNgChEn.PRo88.MiNgChEn.PRo20D.MiNgChEn.PRo9A8.MiNgChEn.PRoC6C0.MiNgChEn.PRo5F0C.MiNgChEn.PRoC640.MiNgChEn.PRoF43.MiNgChEn.PRo95C8.MiNgChEn.PRoFDC.MiNgChEn.PRoCC.MiNgChEn.PRo09.MiNgChEn.PRo03F0.MiNgChEn.PRoAB.MiNgChEn.PRoB9.MiNgChEn.PRo1A.MiNgChEn.PRo0DD.MiNgChEn.PRo99A.MiNgChEn.PRo8902.MiNgChEn.PRoAF.MiNgChEn.PRo456.MiNgChEn.PRo1F.MiNgChEn.PRo2E4.MiNgChEn.PRo45.MiNgChEn.PRo22.MiNgChEn.PRo6D6F.MiNgChEn.PRoA1A.MiNgChEn.PRo1B.MiNgChEn.PRo84.MiNgChEn.PRoDB.MiNgChEn.PRo7B91.MiNgChEn.PRo10.MiNgChEn.PRo983F.MiNgChEn.PRoBD89.MiNgChEn.PRo3AD5.MiNgChEn.PRo44.MiNgChEn.PRo5135.MiNgChEn.PRoCDA.MiNgChEn.PRo95C.MiNgChEn.PRo004.MiNgChEn.PRo9D7.MiNgChEn.PRo9CD.MiNgChEn.PRoC7B0.MiNgChEn.PRo40C0.MiNgChEn.PRo0CD.MiNgChEn.PRo1.MiNgChEn.PRo378.MiNgChEn.PRo33A.MiNgChEn.PRo4007.MiNgChEn.PRoFC14.MiNgChEn.PRo17B.MiNgChEn.PRoE7.MiNgChEn.PRo338.MiNgChEn.PRo83E.MiNgChEn.PRoF305.MiNgChEn.PRo833F.MiNgChEn.PRo820.MiNgChEn.PRo7D.MiNgChEn.PRoE9.MiNgChEn.PRoF966.MiNgChEn.PRo7EB.MiNgChEn.PRoA06.MiNgChEn.PRoF18.MiNgChEn.PRo497.MiNgChEn.PRoFB.MiNgChEn.PRo2EE.MiNgChEn.PRo11D.MiNgChEn.PRo9.MiNgChEn.PRo85.MiNgChEn.PRoB18.MiNgChEn.PRoC66E.MiNgChEn.PRo714.MiNgChEn.PRoF12.MiNgChEn.PRoFAE.MiNgChEn.PRoB13A.MiNgChEn.PRoBDCB.MiNgChEn.PRoE6.MiNgChEn.PRo6F.MiNgChEn.PRo678.MiNgChEn.PRo641.MiNgChEn.PRo8C.MiNgChEn.PRo9FC.MiNgChEn.PRo14A.MiNgChEn.PRo5.MiNgChEn.PRo24.MiNgChEn.PRo2.MiNgChEn.PRo3BF.MiNgChEn.PRoC234.MiNgChEn.PRo26F1.MiNgChEn.PRoD.MiNgChEn.PRo72F.MiNgChEn.PRoB4.MiNgChEn.PRo41.MiNgChEn.PRo2810.MiNgChEn.PRo83.MiNgChEn.PRo6B9.MiNgChEn.PRo3035.MiNgChEn.PRoE7E2.MiNgChEn.PRoCC1B.MiNgChEn.PRoD65.MiNgChEn.PRo1EE0.MiNgChEn.PRo7.MiNgChEn.PRo52CD.MiNgChEn.PRo6EFE.MiNgChEn.PRoEC2C.MiNgChEn.PRo3.MiNgChEn.PRo0BD.MiNgChEn.PRoC.MiNgChEn.PRoF.MiNgChEn.PRoCA4.MiNgChEn.PRo0.MiNgChEn.PRo823A.MiNgChEn.PRo8.MiNgChEn.PRo4.MiNgChEn.PRoB7.MiNgChEn.PRoC96.MiNgChEn.PRoDE7.MiNgChEn.PRo76B.MiNgChEn.PRo1BB.MiNgChEn.PRo274.MiNgChEn.PRoBAB1.MiNgChEn.PRo0DA9.MiNgChEn.PRoF617.MiNgChEn.PRo323.MiNgChEn.PRo12BD.MiNgChEn.PRoF1.MiNgChEn.PRo4A.MiNgChEn.PRo1B5D.MiNgChEn.PRo543.MiNgChEn.PRo7B.MiNgChEn.PRo958.MiNgChEn.PRo17C.MiNgChEn.PRo4E.MiNgChEn.PRoF599.MiNgChEn.PRoEE.MiNgChEn.PRo832.MiNgChEn.PRo4E81.MiNgChEn.PRo3CF.MiNgChEn.PRoAB8.MiNgChEn.PRoEEA1.MiNgChEn.PRo3D4.MiNgChEn.PRo2D.MiNgChEn.PRoF4D2.MiNgChEn.PRoF482.MiNgChEn.PRoD98B.MiNgChEn.PRo33.MiNgChEn.PRoF39.MiNgChEn.PRoFD5.MiNgChEn.PRoBC7D.MiNgChEn.PRo8ED.MiNgChEn.PRoD47.MiNgChEn.PRo4F5.MiNgChEn.PRoD5C1.MiNgChEn.PRoFBA3.MiNgChEn.PRo31.MiNgChEn.PRoD0.MiNgChEn.PRo47F.MiNgChEn.PRo
PEP8是Python的命!Black一键格式化,缩进换行全搞定,代码美到哭
发布时间:2026/6/10 1:00:15
最先推荐一个称作black的库, 它被用来把代码格式弄成符合pep8规范的代码。一 代码编排1 进行缩进, 采用 4 个空格来形成缩进, 此功能编辑器均能够予以完成, 绝不使用 Tap, 而且更不可将 Tap 与空格交叉混合使用。尽量让 每行的范围的最大长度设定为79 , 倘若换行时 可以采用反斜杠, 最好是使用圆括号。换行标记位置于在操作符的后面敲回车。3类与top - level函数定义之间要空出两行, 类之中的方法定义之间需空一行, 函数内部逻辑不相关的段落之间得空一行, 其他地方尽量不要再有空行。二 文档编排模块内容之顺序为, 模块说明以及, 其他定义。当中部分, 依标准、三方以及自身编写顺序逐个排放, 其间空出一行呐。2 不要在一句中多个库比如 os, sys不推荐。倘若选取from XX XX来引用库, 那么能够省略‘.’, 然而皆有可能出现命名冲突的状况, 在这种时候便需要采用XX。三 空格的使用总体原则避免不必要的空格。1 各种右括号前不要加空格。2 逗号、冒号、分号前不要加空格。3 函数的左括号前不要加空格。如Func(1)。4 序列的左括号前不要加空格。如list。5 操作符左右各加一个空格不要为了对齐增加空格。6 函数默认参数使用的赋值符左右省略空格。7 不要将多句语句写在同一行尽管使用‘’允许。四 注释在总的原则方面, 那种错误的注释, 其效果还比不上没有注释, 所以, 当一组代码出现了某些变化的时候, 我们要做的第一件事情, 就是要去更改注释务必使用英文来搞注释哩, 最优当属完整的句子, 开头字母得大写, 句子末尾要有终止符号, 终止符号后面跟两个空格呀 , 开启下一句。要是是短语, 可以省去终止符号。1块注释, 是在一段代码之前所增添的注释, 需在‘#’之后加上一空格, 段落之间是以仅有‘#’的行来进行间隔, 就如同这样:: .Input : : None进行2行注释, 于一句代码之后添加注释。举例来讲: x等于x加上1, 此为#x后面是注释内容。但是这种方式尽量少使用。3 避免无谓的注释。五 文档描述对于所有的, 那些属于共有的模块、函数、类以及方法都需要去写注释而那些并非共有的内容, 虽然没有写注释的必要, 但是呢, 也能够进行注释的撰写, 注释要写在def的下一行。2 如果要换行参考如下例子,详见PEP 257 aplotz says to the first.六 命名规范总得来讲的原则是, 新编写的代码务必要按照接下来的命名风格去做, 现有的库的编码尽可能维持风格。尽量单独去使用, 小写字母“l”, 大写字母“O”这类容易混淆的字母。2 模块命名尽量短小使用全部小写的方式可以使用下划线。3 包命名尽量短小使用全部小写的方式不可以使用下划线。4 类的命名使用的方式模块内部使用的类采用的方式。5 异常命名使用Error后缀的方式。全局变量, 尽量仅在模块之内具备有效性, 就如同C语言里的那般。实现的方法存在两种, 其一为这种机制, 其二是前缀一个下划线。7 函数命名使用全部小写的方式可以使用下划线。8 常量命名使用全部大写的方式可以使用下划线。9类的属性, 也就是方法以及变量, 其命名采用全部小写的形式, 并且能够使用下划线。九类的属性存在三种作用域, 有 non-和 API, 能够理解为 C里的, , , 在 non-属性之前, 前缀一条下划线。有 11 类的属性, 要是它和关键字名字出现冲突的情况, 那就后缀一下划线, 尽量别采用缩略等其他的方式。存在这样的情况, 对于某些类当中特定的属性而言, 鉴于要以防万一和子类的属性命名产生冲突, 所以要在这些属性的前面加上两条下划线作为前缀, 比如说在类Foo里面去声明__a的时候, 当进行访问操作时, 只能够通过Foo.这种方式来进行, 以此达到避免产生歧义的目的。然而要是子类的名称同样也叫做Foo的话, 那么就全然没有办法了。十三类的那个方法的头一个参数势必得为官已斧, 表示自家, 然而静态方法的头一个参数势必要为官已斧, 表示类已斧。七 编码建议编码之时, 考虑到其他实现所存在的效率等方面的问题, 举例来说, 运算符‘’在当中效率是很高的, 然而在都是中效率却极为低, 所以应当采用.join()这样的方式。尽量去运用‘is’‘is not’来替换‘’, 像是若x is not None这种情况要好过if x , 这是要尽可能达成的。对3进行使用, 使用基于类的异常, 在这种情况下, 每个模块或者包都存在着自身的异常类, 而此一异常类来自于继承。4 异常中不要使用裸露的后跟具体的。5 异常中try的代码尽可能少。比如try:value :(key)else:(value)要优于try:Too broad!():Will also catch by ()(key)6 运用()以及()去替代切片来开展序列前缀或者后缀的查验。比如说:Yes: if foo.(bar):优于No: if foo bar:7 使用()比较对象的类型。比如Yes: if (obj, int): 优于No: if type(obj) is type(1):8 判断序列空或不空有如下规则Yes: if not seq:if seq:优于No: if len(seq)if not len(seq)9 字符串不要以空格收尾。10 二进制数据判断使用 if 的方式。八 PEP8 格式化ctrlaltL 快捷键格式化其它参考文章常用PEP8编码规范和建议经验分享PEP8 编码规范中文版D7.MiNgChEn.PRo0605.MiNgChEn.PRo59.MiNgChEn.PRo746B.MiNgChEn.PRo01E3.MiNgChEn.PRoC4D.MiNgChEn.PRoB1C1.MiNgChEn.PRo55AC.MiNgChEn.PRoD4D.MiNgChEn.PRoAF7C.MiNgChEn.PRo082.MiNgChEn.PRo74.MiNgChEn.PRo146.MiNgChEn.PRo451.MiNgChEn.PRo6EA8.MiNgChEn.PRo665.MiNgChEn.PRo14.MiNgChEn.PRo46F.MiNgChEn.PRoD5C.MiNgChEn.PRoCA58.MiNgChEn.PRo75.MiNgChEn.PRo03.MiNgChEn.PRo69.MiNgChEn.PRoAAA4.MiNgChEn.PRoB21.MiNgChEn.PRo5347.MiNgChEn.PRoE.MiNgChEn.PRoFC3D.MiNgChEn.PRo3CFA.MiNgChEn.PRo738.MiNgChEn.PRo4B.MiNgChEn.PRo88.MiNgChEn.PRo20D.MiNgChEn.PRo9A8.MiNgChEn.PRoC6C0.MiNgChEn.PRo5F0C.MiNgChEn.PRoC640.MiNgChEn.PRoF43.MiNgChEn.PRo95C8.MiNgChEn.PRoFDC.MiNgChEn.PRoCC.MiNgChEn.PRo09.MiNgChEn.PRo03F0.MiNgChEn.PRoAB.MiNgChEn.PRoB9.MiNgChEn.PRo1A.MiNgChEn.PRo0DD.MiNgChEn.PRo99A.MiNgChEn.PRo8902.MiNgChEn.PRoAF.MiNgChEn.PRo456.MiNgChEn.PRo1F.MiNgChEn.PRo2E4.MiNgChEn.PRo45.MiNgChEn.PRo22.MiNgChEn.PRo6D6F.MiNgChEn.PRoA1A.MiNgChEn.PRo1B.MiNgChEn.PRo84.MiNgChEn.PRoDB.MiNgChEn.PRo7B91.MiNgChEn.PRo10.MiNgChEn.PRo983F.MiNgChEn.PRoBD89.MiNgChEn.PRo3AD5.MiNgChEn.PRo44.MiNgChEn.PRo5135.MiNgChEn.PRoCDA.MiNgChEn.PRo95C.MiNgChEn.PRo004.MiNgChEn.PRo9D7.MiNgChEn.PRo9CD.MiNgChEn.PRoC7B0.MiNgChEn.PRo40C0.MiNgChEn.PRo0CD.MiNgChEn.PRo1.MiNgChEn.PRo378.MiNgChEn.PRo33A.MiNgChEn.PRo4007.MiNgChEn.PRoFC14.MiNgChEn.PRo17B.MiNgChEn.PRoE7.MiNgChEn.PRo338.MiNgChEn.PRo83E.MiNgChEn.PRoF305.MiNgChEn.PRo833F.MiNgChEn.PRo820.MiNgChEn.PRo7D.MiNgChEn.PRoE9.MiNgChEn.PRoF966.MiNgChEn.PRo7EB.MiNgChEn.PRoA06.MiNgChEn.PRoF18.MiNgChEn.PRo497.MiNgChEn.PRoFB.MiNgChEn.PRo2EE.MiNgChEn.PRo11D.MiNgChEn.PRo9.MiNgChEn.PRo85.MiNgChEn.PRoB18.MiNgChEn.PRoC66E.MiNgChEn.PRo714.MiNgChEn.PRoF12.MiNgChEn.PRoFAE.MiNgChEn.PRoB13A.MiNgChEn.PRoBDCB.MiNgChEn.PRoE6.MiNgChEn.PRo6F.MiNgChEn.PRo678.MiNgChEn.PRo641.MiNgChEn.PRo8C.MiNgChEn.PRo9FC.MiNgChEn.PRo14A.MiNgChEn.PRo5.MiNgChEn.PRo24.MiNgChEn.PRo2.MiNgChEn.PRo3BF.MiNgChEn.PRoC234.MiNgChEn.PRo26F1.MiNgChEn.PRoD.MiNgChEn.PRo72F.MiNgChEn.PRoB4.MiNgChEn.PRo41.MiNgChEn.PRo2810.MiNgChEn.PRo83.MiNgChEn.PRo6B9.MiNgChEn.PRo3035.MiNgChEn.PRoE7E2.MiNgChEn.PRoCC1B.MiNgChEn.PRoD65.MiNgChEn.PRo1EE0.MiNgChEn.PRo7.MiNgChEn.PRo52CD.MiNgChEn.PRo6EFE.MiNgChEn.PRoEC2C.MiNgChEn.PRo3.MiNgChEn.PRo0BD.MiNgChEn.PRoC.MiNgChEn.PRoF.MiNgChEn.PRoCA4.MiNgChEn.PRo0.MiNgChEn.PRo823A.MiNgChEn.PRo8.MiNgChEn.PRo4.MiNgChEn.PRoB7.MiNgChEn.PRoC96.MiNgChEn.PRoDE7.MiNgChEn.PRo76B.MiNgChEn.PRo1BB.MiNgChEn.PRo274.MiNgChEn.PRoBAB1.MiNgChEn.PRo0DA9.MiNgChEn.PRoF617.MiNgChEn.PRo323.MiNgChEn.PRo12BD.MiNgChEn.PRoF1.MiNgChEn.PRo4A.MiNgChEn.PRo1B5D.MiNgChEn.PRo543.MiNgChEn.PRo7B.MiNgChEn.PRo958.MiNgChEn.PRo17C.MiNgChEn.PRo4E.MiNgChEn.PRoF599.MiNgChEn.PRoEE.MiNgChEn.PRo832.MiNgChEn.PRo4E81.MiNgChEn.PRo3CF.MiNgChEn.PRoAB8.MiNgChEn.PRoEEA1.MiNgChEn.PRo3D4.MiNgChEn.PRo2D.MiNgChEn.PRoF4D2.MiNgChEn.PRoF482.MiNgChEn.PRoD98B.MiNgChEn.PRo33.MiNgChEn.PRoF39.MiNgChEn.PRoFD5.MiNgChEn.PRoBC7D.MiNgChEn.PRo8ED.MiNgChEn.PRoD47.MiNgChEn.PRo4F5.MiNgChEn.PRoD5C1.MiNgChEn.PRoFBA3.MiNgChEn.PRo31.MiNgChEn.PRoD0.MiNgChEn.PRo47F.MiNgChEn.PRo