Python 编码规范

01-26 5,430 views

Python也算是老朋友了,之前我也写过一篇autopep8进行编码格式化的文章。今天来说说在写代码的时候,作为一名python程序员如何让你的代码让别人更易读懂,养成良好的编码习惯。远离被人喷的尴尬~

大多数语言可能有几种不同的风格。对于python,PEP8引入了大多数项目遵循的风格知道。它给出了一个高度可读,视觉友好的编码风格。每个Python开发者都应该读一下,对你会有很大帮助:

  • 使用四个空格缩进,而非TAB.
  • 在小缩进(可以嵌套更深)和大缩进(更易读)之间,4空格是一个很好的折中。TAB引发了一些混乱,最好弃用。

  • 折行以确保其不会超过79个字符
  • 这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件
  • 使用空行分隔函数和类,以及函数中的大块代码
  • 可能的话,注释独占一行

  • 使用文档字符串

  • 把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格:a = f(1, 2) + g(3, 4)

  •  统一函数和类命名

  •  推荐类名用驼峰命名,函数和方法名用小写_和_下划线。总是用self作为方法的第一个参数

  • 不要使用花哨的编码,如果你的代码的目的是要在国际化环境。Python的默认情况下,UTF-8,甚至普通的ASCII总是工作的最好
  • 同样,也不要使用非ASCII字符的标识符,除非是不同语种的会阅读或者维护代码

咱们上面说了一下代码的书写规范,接下来再说说在python类中或者函数中有关“注释”的规范书写。

本文源地址:http://www.pydevops.com,请勿转载!!!!

文档字符串:

第一行应该是关于对象用途的简介。简短起见,不用明确的陈述对象名或类型,因为它们可以从别的途径了解到(除非这个名字碰巧就是描述这个函数操作的动词)。这一行应该以大写字母开头,以句号结尾。


如果文档字符串有多行,第二行应该空出来,与接下来的详细描述明确分隔。接下来的文档应该有一或多段描述对象的调用约定、边界效应等。

Python的解释器不会从多行的文档字符串中去除缩进,所以必要的时候应当自己清除缩进。这符合通常的习惯。第一行之后的第一个非空行决定了整个文档的缩进格式。(我们不用第一行是因为它通常紧靠着起始的引号,缩进格式显示的不清楚。)留白“相当于”是字符串的起始缩进。每一行都不应该有缩进,如果有缩进的话,所有的留白都应该清除掉。留白的长度应当等于扩展制表符的宽度(通常是8个空格)。

以下是一个多行文档字符串的示例:       

>>> def my_function():
...     """Do nothing, but document it.
...
...     No, really, it doesn't do anything.
...     """
...     pass
...
>>> print(my_function.__doc__)
Do nothing, but document it.

    No, really, it doesn't do anything.

函数注释:

函数注释是关于用户自定义的函数的完全可选的、随意的元数据信息。无论Python本身或者标准库中都没有使用函数注解;本节只是描述了语法。第三方的项目是自由地为文档,类型检查,以及其它用途选择函数注解。

注解是以字典形式存储在函数的__annotations__属性中,对函数的其它部分没有任何影响。参数注解(Parameter annotations)是定义在参数名称的冒号后面,紧随着一个用来表示注解的值得表达式。返回注释(Return annotations)是定义在一个->后面,紧随着一个表达式,在冒号与->之间。下面的示例包含一个位置参数,一个关键字参数,和没有意义的返回值注释:

>>> def f(ham: 42, eggs: int = 'spam') -> "Nothing to see here":
...     print("Annotations:", f.__annotations__)
...     print("Arguments:", ham, eggs)
...
>>> f('wonderful')
Annotations: {'eggs': <class 'int'>, 'return': 'Nothing to see here', 'ham': 42}
Arguments: wonderful spam

如果像了解更过有关python编码规范可以查看PEP8手册。希望本文对大家有所帮助。