python基础之编码规范总结

作者:florachy 时间:2021-04-17 06:13:26 

一、PEP 8规范

官方文档:https://legacy.python.org/dev/peps/pep-0008/
中文翻译: https://www.jb51.net/article/103944.htm

二、缩进

每一级缩进4个空格。

续行应该与包裹元素对齐,要么使用圆括号,方括号,花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐。当使用挂行缩进对齐时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行。

  • 对齐缩进(左右括号对齐)


def long_function_name(var_one, var_two,
                      var_three, var_four):
   print(var_one)
  • 悬挂缩进


def long_function_name(
      var_one, var_two,
      var_three, var_four):
  print(var_one)
  • 层级缩进


def long_function_name(
     var_one, var_two, var_three,
     var_four):
 print(var_one, var_two, var_three, var_four)

三、行的最大长度

所有行限制的最大字符数为79

没有结构化限制的大块文本(文档字符或者注释),每行的最大字符数限制在72。


with open("file1", "r") as f1, \
       open("file2", "r") as f2:
   f2.write(f1.read())

四、空行

顶层函数和类定义,前后用两个空行隔开。

类里面方法定义用一个空行隔开。


class Class01:
   pass

class Class02:
   def function_01(self):
       pass

def function_02(self):
       pass

五、命名约定

变量命名

  • 永远不要使用字母I (小写的L), O (大写的O), I (大写的I)作为单字符的变量名。

  • 在有些字体里面,这些字符无法与数字0和1区分。如果想用I, 可使用L代替。

函数命名

  • 函数名应该小写,如果想提高可读性可以用下划线分隔。

  • 大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用,保持向后兼容。

类命名

  •  类名一般使用首字母大写的约定。

  • 在接口被文档化并且主要被用于调用的情况下,可以使用函数的命名风格代替。

  • 注意:对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。

类里面函数和方法参数

  • 始终要将self作为实例方法的第一个参数。

  • 始终要将cls作为类方法的第一个参数。

  • 如果函数的参数名和已有关键字冲突,在最后加大意下划线比缩写或者随意拼写更好。因此class_比clss更好。

六、字符串引号

单引号和双引号字符串是相同的。PEP不会为这个给出建议。选择一条规则并坚持使用下去。当一个字符串中包含单引号或者双引号字符串的时候,使用和最外层不同的符号来避免使用反斜杠,从而提高可读性。

模块和包导入规范

  • 命名规范 模块名称要短,使用小写,并避免使用特殊符号, 比如点和问号

  • 因此请尽量保持模块名简单,以无需分开单词最佳(不推荐在两个单词之间使用下划线)

模块导入建议

示例结果
from modu import *差, 不清楚具体从模块中导入了哪些内容
from modu import sqrt稍好
import modu最佳 , 调用的时候直接使用modu.sqrt能比较清楚的知道当前方法属于哪个模块。
import os \n import sys推荐
import os, sys不推荐
from subprocess import Popen, PIPE也可以

__all__变量

  • 如果模块中存在全局变量__all__, 那么通过__all__ from xxx import *导入时也只会导入__all__中指定的方法和变量,没有的话默认全部导入。

七、包

  • 任意包含__init__.py文件的目录都被认为是一个python包。

  • 因为导入包时会首先执行__init__.py文件

  • 包中__init__.py文件中__all__变量的作用

  • init.py文件中存在全局变量__all__, 通过from xxx import *导入时也只会导入__all__中指定的方法和变量,没有的话默认全部导入。

八、注释


与代码相矛盾的注释比没有注释还糟,当代码更改时,优先更新对应的注释!
注释应该是完整的句子。如果一个注释是一个短语或者句子,它的第一个单词应该大写,除非它是以小写字母开头的标识符(永远不要改变标识符的大小写!)。
如果注释很短,结尾的句号可以省略。块注释一般由完整句子的一个或多个段落组成,并且每句话结束有个句号。
在句尾结束的时候应该使用两个空格。
在非英语国家的python程序员,请使用英文写注释,除非120%的确信你的代码不会被使用其他语言的人阅读。

块注释

块注释通常适用于跟随它们的某些(或全部)代码,并缩进到与代码相同的级别。块注释的每一行开头使用一个#和一个空格(除非块注释内部缩进文本)。

块注释内部的段落通常只有一个#的空行分隔。

行内注释

有节制地使用行内注释

行内注释是与代码语句同行的注释。行内注释和代码至少要有两个空格分隔。注释由#和一个空格开始。

文档注释

要为所有的公共模块,函数,类和方法编写文档说明。

非公共的方法没有必要,但是应该有一个描述方法具体作用的注释。这个注释应该在def那一行之后。

PEP257描述了写出好的文档注释的相关约定。特别需要注意的是:多行文档注释使用的结尾三引号应该是自成一行,例如:


"""这是注释
注释的具体内筒
"""

对于单行的文档说明,尾部的三引号应该和文档在同一行。

来源:https://blog.csdn.net/FloraCHY/article/details/117045261

标签:python,编码,规范
0
投稿

猜你喜欢

  • javascript实现拼图游戏

    2024-05-03 11:11:04
  • vuejs实现标签选项卡动态更改css样式的方法

    2024-04-30 10:22:57
  • 用ASP设计购物车

    2008-04-17 13:52:00
  • 最新idea2021注册码永久激活(激活到2100年)

    2023-06-21 01:42:42
  • Python实现emoji表情的简单方法

    2023-07-09 13:10:22
  • python清除字符串前后空格函数的方法

    2023-10-14 07:12:57
  • 基于K.image_data_format() == 'channels_first' 的理解

    2022-08-01 08:12:45
  • Python Flask 实现 HTML 文件压缩案例代码(9 级压缩)

    2021-05-22 15:22:13
  • 如何用ASP建立Index Server查询对象并为其参数赋值?

    2010-06-11 19:59:00
  • 关于Flask项目无法使用公网IP访问的解决方式

    2021-01-03 10:04:00
  • 讲解无法打开用户默认数据库的解决方法

    2008-12-05 15:55:00
  • .Net Core SDK命令介绍及使用

    2024-05-13 09:16:00
  • javascript中不易分清的slice,splice和split三个函数

    2024-04-28 09:37:29
  • Web 开发中遇到的UTF-8编码的问题总结第1/2页

    2023-06-09 05:02:10
  • PHP程序员最常犯的11个MySQL错误

    2012-01-05 19:13:02
  • 关于PowerDesigner初体验的使用介绍

    2024-01-13 04:15:25
  • 通过Python来使用七牛云存储的方法详解

    2022-09-13 19:56:36
  • Python 编码规范(Google Python Style Guide)

    2023-04-12 03:49:35
  • Go使用sync.Map来解决map的并发操作问题

    2024-04-29 13:05:57
  • python deque模块简单使用代码实例

    2022-10-16 04:08:12
  • asp之家 网络编程 m.aspxhome.com