技术编程|Python-不得不知的PEP8代码规范
常见的注意点:
1、每一级缩进使用4个空格 。
2、续行应该与其包裹元素对齐 , 要么使用圆括号、方括号和花括号内的隐式行连接来垂直对齐 , 要么使用挂行缩进对齐3 。 当使用挂行缩进时 , 应该考虑到第一行不应该有参数 , 以及使用缩进以区分自己是续行 。
3、建议写法
本文插图
4、不建议写法:
本文插图
行的最大长度:
1、所有行限制的最大字符数为79 。
2、没有结构化限制的大块文本(文档字符或者注释) , 每行的最大字符数限制在72 。 空行:
1、顶层函数和类的定义 , 前后用两个空行隔开 。
2、类里的方法定义用一个空行隔开 。 imports 导入:
1、多个模块分行导入 , 例如:
本文插图
2、导入总是位于文件的顶部 , 在模块注释和文档字符串之后 , 在模块的全局变量与常量之前 。
3、导入应该按照标准库、相关第三方库、自定义库的顺序分组 , 每组之间用空行隔开 。
4、推荐使用绝对路径导入 , 如果导入系统没有正确的配置(比如包里的一个目录在sys.path里的路径后) , 使用绝对路径会更加可读并且性能更好(至少能提供更好的错误信息) 。 Block Comments 块注释
1、块注释通常适用于跟随它们的某些(或全部)代码 , 并缩进到与代码相同的级别 。 块注释的每一行开头使用一个#和一个空格(除非块注释内部缩进文本) 。
2、块注释内部的段落通过只有一个#的空行分隔 。 Inline Comments 行内注释
1、有节制地使用行内注释 。
2、行内注释是与代码语句同行的注释 。 行内注释和代码至少要有两个空格分隔 。 注释由#和一个空格开始 。 Documentation Strings 文档字符串
1、要为所有的公共模块 , 函数 , 类以及方法编写文档说明 。
2、非公共的方法没有必要 , 但是应该有一个描述方法具体作用的注释 。 这个注释应该在def那一行之后 。
3、PEP 257描述了写出好的文档说明相关的约定 。 特别需要注意的是 , 多行文档说明使用的结尾三引号应该自成一行 , 例如:
本文插图
约定俗成的命名:应避免的名字:
1、永远不要使用字母‘l’(小写的L) , ‘O’(大写的O) , 或者‘I’(大写的I)作为单字符变量名 。
2、在有些字体里 , 这些字符无法和数字0和1区分 , 如果想用‘l’ , 用‘L’代替 。 Class Names 类名:
1、类名一般使用首字母大写的约定 。
2、在接口被文档化并且主要被用于调用的情况下 , 可以使用函数的命名风格代替 。
3、注意 , 对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起) , 首字母大写的命名法只用于异常名或者内部的常量 。 Function Names 函数名
1、函数名应该小写 , 如果想提高可读性可以用下划线分隔 。
2、大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用(比如 threading.py) , 保持向后兼容性 。 Function and method arguments 函数和方法参数
1、始终要将 self 作为实例方法的的第一个参数 。
2、始终要将 cls 作为类静态方法的第一个参数 。
3、如果函数的参数名和已有的关键词冲突 , 在最后加单一下划线比缩写或随意拼写更好 。 因此 class_ 比 clss 更好 。 (也许最好用同义词来避免这种冲突)Programming Recommendations 编程建议 分页标题
1、代码应该用不损害其他Python实现的方式去编写(PyPy , Jython , IronPython , Cython , Psyco 等) 。 比如 , 不要依赖于在CPython中高效的内置字符连接语句 a += b 或者 a = a + b 。 这种优化甚至在CPython中都是脆弱的(它只适用于某些类型)并且没有出现在不使用引用计数的实现中 。 在性能要求比较高的库中 , 可以用 ”.join() 代替 。 这可以确保字符关联在不同的实现中都可以以线性时间发生 。
2、和像None这样的单例对象进行比较的时候应该始终用 is 或者 is not , 永远不要用等号运算符 。
【技术编程|Python-不得不知的PEP8代码规范】3、使用 is not 运算符 , 而不是 not … is。 虽然这两种表达式在功能上完全相同 , 但前者更易于阅读 , 所以优先考虑 。
- 摄像头|小米截胡中兴屏下摄像头技术,小米研发还是供应链技术?
- 马斯克|马斯克用活猪演示脑机接口技术:实时读取猪脑信息 心灵感应成真了
- 三防|带你了解三防手持终端的秘密
- 没文化受人欺负,没技术也受人欺负
- 中华人民共和国商务部 中华人民共和国科学技术部公告
- 第三|原创 小米发布第三代屏下相机技术,或将在Mix 4上首秀?
- 海信|首个新兴显示技术分标委成立 海信牵头制定国标
- 中年|Python编程语言有什么独特的优势呢?
- 机器人|AI训练师让机器人更聪明
- Huawei|华为推出“二郎神”智能摄像机:加入手机技术 长焦广角全覆盖