python基础之编码规范总结

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

"""这是注释
注释的具体内筒
"""
 对于单行的文档说明,尾部的三引号应该和文档在同一行。

到此这篇关于python基础之编码规范总结的文章就介绍到这了,更多相关python编码规范内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 编码规范整理

    一 代码编排 1 缩进4个空格的缩进(编辑器都可以完成此功能),不要使用Tap,更不能混合使用Tap和空格. 2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车. 3 类和top-level函数定义之间空两行:类中的方法定义之间空一行:函数内逻辑无关段落之间空一行:其他地方尽量不要再空行. 二 文档编排 1 模块内容的顺序:模块说明和docstring-import-globals&constants-其他定义.其中import部分,又按标准.三方和自己编写顺

  • Python新建项目自动添加介绍和utf-8编码的方法

    你是不是觉得每次新建项目都要写一次# coding:utf-8,感觉特烦人 呐!懒(fu)人(li)教程来啦,先看效果图吧 中文版 如图进入设置 然后将下列内容粘贴进去就行了,是不是很简单 """ -*- coding:utf-8 -*- Author:${USER} Age:24 Call:199**9**9*9 Email:nsq88@vip.qq.com Time: ${DATE} ${TIHE} Software: ${PRODUCT_NAME} "&quo

  • 关于Python字符编码与二进制不得不说的一些事

    二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但很难检查电流的状态差异并且很难稳定状态,最稳定的检查是 通电和不通电状态,共两种状态那就规定 通电为 1 不通电 为 0,1和0的状态逻 辑被称为比特 Bit 那么如何用 0 和 1 表示数字和字符呢? 首先找出需要表示的字符,英文字符和数字字符才100多个,需要 7 个二进制位就 可以全部表示,但

  • 详解Python中的编码问题(encoding与decode、str与bytes)

    1 引言 在文件读写及字符操作时,我们经常会出现下面这几种错误: TypeError: write() argument must be str, not bytes AttributeError: 'URLError' object has no attribute 'code' UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' inposition 5747: illegal multibyte sequence 这些

  • python源文件的字符编码知识点详解

    默认情况下,Python 源码文件以 UTF-8 编码方式处理.在这种编码方式中,世界上大多数语言的字符都可以同时用于字符串字面值.变量或函数名称以及注释中--尽管标准库中只用常规的 ASCII 字符作为变量或函数名,而且任何可移植的代码都应该遵守此约定.要正确显示这些字符,你的编辑器必须能识别 UTF-8 编码,而且必须使用能支持打开的文件中所有字符的字体. 1.如果不使用默认编码,要声明文件所使用的编码,文件的第一行要写成特殊的注释. 语法如下所示: # -*- coding: encodi

  • Python 忽略文件名编码的方法

    问题 你想使用原始文件名执行文件的I/O操作,也就是说文件名并没有经过系统默认编码去解码或编码过. 解决方案 默认情况下,所有的文件名都会根据 sys.getfilesystemencoding() 返回的文本编码来编码或解码.比如: >>> sys.getfilesystemencoding() 'utf-8' >>> 如果因为某种原因你想忽略这种编码,可以使用一个原始字节字符串来指定一个文件名即可.比如: >>> # Wrte a file usi

  • Python3 json模块之编码解码方法讲解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,在接口数据开发和传输中非常常用. Python3中我们利用内置模块json解码和编码JSON对象.json模块提供了四个功能: dumps.dump.loads.load dumps 把数据类型转换成字符串  dump  把数据类型转换成字符串

  • 解决python3 中的np.load编码问题

    由于在Python2 中的默认编码为ASCII,但是在Python3中的默认编码为UTF-8. 问题: 所以在使用np.load(det.npy)的时候会出现错误提示: you may need to pass the encoding= option to numpy.load 解决方法: 当遇到这种情况的时候,用np.load(det.npy,encoding="latin1")就可以了. 补充:python解决numpy导入乱码问题------已解决 使用numpy的loadtx

  • Python开发编码规范

    这篇文档所给出的编码约定适用于在主要的Python发布版本中组成标准库的Python   代码,请查阅相关的关于在Python的C实现中C代码风格指南的描述. 这篇文档改编自Guido最初的<Python风格指南>一文,并从<Barry's style guide>中添加了部分内容.在有冲突的地方,Guide的风格规则应该是符合本PEP的意图(译注:指当有冲突时,应以Guido风格为准).这篇PEP仍然尚未完成(实际上,它可能永远都不会完成).   在这篇风格指导中的一致性是重要的

  • Python 编码规范(Google Python Style Guide)

    Python 风格规范(Google) 本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护. 如果你关注的是 Google 官方英文版, 请移步 Google Style Guide 以下代码中 Yes 表示推荐,No 表示不推荐. 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 每行不超过80个字符 以下情况除外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这

  • Python 常用 PEP8 编码规范详解

    Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: # (垂直隐式缩进)对准左括号 foo = long_function_name(var_one, var_two, var_three, var_four) # (悬挂缩进) 一般情况只需多一层缩进 foo = long_function_name( var_one, var_two, var_three, var_four) # (悬挂缩进) 但下面情况,

  • python3中编码获取网页的实例方法

    学了python后,之前一些我们常用的方法,也可以换一种思路用python中的知识来解决.相信操作出来后,能收获一大批小粉丝们.就像我们没学习编程之前,看到那种大神都是可望而不可即.今天我们就之前简单获取网页的这种操作用python中的编码来解决,大家可以自行体会一下两者的不同. 1. encoding和apparent_encoding import scrapy url="https://www.xxx.net/html/gndy/dyzz/index.html" re=reque

  • Python2与Python3关于字符串编码处理的差别总结

    0x00 字符的编码 计算机毕竟是西方国家的发明,最开始并没有想到会普及到全世界,只用一个字节中的7位(ASCII)来表示字符对于现在庞大的文字数量来说显然不够,所以先后经历了好几套编码方案,不同国家和地区又有自己的方案,造成了现在诸多的历史遗留问题. 0x01 Python中的字符串 Python有两种不同的字符串,一种存储文本,一种存储字节.对于文本,Python内部采用Unicode存储,而字节字符串显示原始字节序列或者ASCII. 什么叫编码(encode)? 按照字面意思和以往经验,我

随机推荐