Python编程规范

本节内容如下:

  • 代码块大括号
  • 分号
  • 行长度
  • 括号
  • 缩进
  • 空行
  • 空格
  • 导入格式
  • 语句
  • 命令

代码块大括号

代码使用缩进的方式,而不是大括号是Python语言规范中的一大特点,如果你有其他语言基础的话,可能需要适应一下:

flag = True

if flag:

    print(‘代码块1‘)

    print(‘代码块2‘)

else:

    print(‘代码块3‘)

    print(‘代码块4‘)

分号

不要在行尾加分号, 也不要用分号将两条命令放在同一行。查看原文

行长度

每行不超过80个字符,以下情况除外:

  1. 长的导入模块语句
  2. 注释里的URL

括号

宁缺毋滥的使用括号

除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用括号是可以的.

Yes: if foo:

         bar()

     while x:

         x = bar()

     if x and y:

         bar()

     if not x:

         bar()

     return foo

     for (x, y) in dict.items(): ...

No:  if (x):

         bar()

     if not(x):

         bar()

     return (foo)

缩进

用4个空格来缩进代码

绝对不要用tab, 也不要tab和空格混用. 对于行连接的情况, 你应该要么垂直对齐换行的元素群:369606713

Yes:   # 与起始变量对齐

       foo = long_function_name(var_one, var_two,

                                var_three, var_four)

       # 字典中与起始值对齐

       foo = {

           long_dictionary_key: value1 +

                                value2,

           ...

       }

       # 4 个空格缩进,第一行不需要

       foo = long_function_name(

           var_one, var_two, var_three,

           var_four)

       # 字典中 4 个空格缩进

       foo = {

           long_dictionary_key:

               long_dictionary_value,

           ...

       }

No:    # 第一行有空格是禁止的

      foo = long_function_name(var_one, var_two,

          var_three, var_four)

      # 2 个空格是禁止的

      foo = long_function_name(

        var_one, var_two, var_three,

        var_four)

      # 字典中没有处理缩进

      foo = {

          long_dictionary_key:

              long_dictionary_value,

              ...

      }

空行

顶级定义之间空两行, 方法定义之间空一行

顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.

空格

按照标准的排版规范来使用标点两边的空格

括号内不要有空格.

按照标准的排版规范来使用标点两边的空格

Yes: spam(ham[1], {eggs: 2}, [])

No:  spam( ham[ 1 ], { eggs: 2 }, [ ] )

不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾).

Yes: if x == 4:

         print x, y

     x, y = y, x

No:  if x == 4 :

         print x , y

     x , y = y , x

参数列表, 索引或切片的左括号前不应加空格.

Yes: spam(1)

no: spam (1)

Yes: dict[‘key‘] = list[index]

No:  dict [‘key‘] = list [index]

在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not). 至于算术操作符两边的空格该如何使用, 需要你自己好好判断. 不过两侧务必要保持一致.

Yes: x == 1

No:  x<1

当‘=‘用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.

Yes: def complex(real, imag=0.0): return magic(r=real, i=imag)

No:  def complex(real, imag = 0.0): return magic(r = real, i = imag)

不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担(适用于:, #, =等):

Yes:

     foo = 1000  # 注释

     long_name = 2  # 注释不需要对齐

     dictionary = {

         "foo": 1,

         "long_name": 2,

         }

No:

     foo       = 1000  # 注释

     long_name = 2     # 注释不需要对齐

     dictionary = {

         "foo"      : 1,

         "long_name": 2,

         }

如果一个类不继承自其它类, 就显式的从object继承. 嵌套类也一样.

Yes: class SampleClass(object):

         pass

     class OuterClass(object):

         class InnerClass(object):

             pass

     class ChildClass(ParentClass):

         """Explicitly inherits from another class already."""

No: class SampleClass:

        pass

    class OuterClass:

        class InnerClass:

            pass

继承自 object 是为了使属性(properties)正常工作, 并且这样可以保护你的代码, 使其不受Python 3000的一个特殊的潜在不兼容性影响. 这样做也定义了一些特殊的方法, 这些方法实现了对象的默认语义, 包括 new, init, delattr, getattribute, setattr, hash, repr, and str .

导入格式

每个导入应该独占一行

Yes: import os

     import sys

No:  import os, sys

导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前. 导入应该按照从最通用到最不通用的顺序分组: 标准库导入 第三方库导入 应用程序指定导入 每种分组中, 应该根据每个模块的完整包路径按字典序排序, 忽略大小写.

import foo

from foo import bar

from foo.bar import baz

from foo.bar import Quux

from Foob import ar

语句

通常每个语句应该独占一行

不过, 如果测试结果与测试语句在一行放得下, 你也可以将它们放在同一行. 如果是if语句, 只有在没有else时才能这样做. 特别地, 绝不要对 try/except 这样做, 因为try和except不能放在同一行.

Yes:

  if foo: bar(foo)

No:

  if foo: bar(foo)

  else:   baz(foo)

  try:               bar(foo)

  except ValueError: baz(foo)

  try:

      bar(foo)

  except ValueError: baz(foo)

命名规范

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.

应该避免的名称

  1. 单字符名称, 除了计数器和迭代器.
  2. 包/模块名中的连字符(-)
  3. 双下划线开头并结尾的名称(Python保留, 例如init)

命名约定

  1. 所谓"内部(Internal)"表示仅模块内可用, 或者, 在类内是保护或私有的.
  2. 用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含).
  3. 用双下划线(__)开头的实例变量或方法表示类内私有.
  4. 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块.
  5. 对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py). 尽管已经有很多现存的模块使用类似于CapWords.py这样的命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰.
时间: 2024-08-03 20:00:33

Python编程规范的相关文章

简明 Python 编程规范

赖勇浩(http://laiyonghao.com) 注:之前发布一篇<简明 Python 编程规范>(见:http://blog.csdn.net/lanphaday/article/details/2834883),本是我给当时所在的公司制定的,发表到博客的时候,对齐等问题都有一些错误,还包括一些错别字.到后来,我又有做过修正.大概在 2010 年 8 年,我又由 C++ 开发转到 Python 开发,便在那之前的基础上润饰和完善,形成第二版.前段时间 simple-is-better.c

Python编程规范(PEP8)

Python编程规范(PEP8) 代码布局 缩进 对于每一次缩进使用4个空格.使用括号.中括号.大括号进行垂直对齐,或者缩进对齐. 制表符还是空格? 永远不要将制表符与空格混合使用.Python最常用的缩进方式是只是用空格. 当调用Python命令行的 -t 选项时,它会检测并警告代码非法混合使用制表符和空格.当使用 -tt 选项时,警告变成了错误. 最大行长度 限制所有行最长为79个字符. 使用反斜杠来分行是一个很好的选择. 我们应当选择在二元操作符之后进行分行,而不是之前. 空行 使用两行空

PEP8 Python编程规范

官方文档: https://www.python.org/dev/peps/pep-0008/ ------------------------------------------------------------------------ PEP8中文翻译: http://www.cnblogs.com/ajianbeyourself/p/4377933.html -----------------------------------------------------------------

python编程规范与代码优化建议

1.严格使用缩进来体现代码的逻辑从属关系. python对代码的缩进是硬性要求,这一点必须时刻注意.如果某个代码段的缩进不对,那么整个程序就是错的,要么是语法错误无法执行,要么是逻辑错误导致错误结果,而检查这样的错误会花费很多时间. 2.每个import语句只导入一个模块,最好按标准库.扩展库.自定义库的顺序依次导入. 尽量避免导入整个库,最好只导入确实需要使用的对象,这会让程序运行更快. 3.最好在每个类.函数定义和一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一

PEP 8 python编程规范

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

python 编程 规范

对于自己需要注意的: 1)不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号.

【转】Python——编码规范

来自于 啄木鸟社区 Python Coding Rule --- hoxide 初译 dreamingk 校对发布 040724 --- xyb 重新排版 040915 --- ZoomQuiet MoinMoin 美化 050610 用Python进行开发时的编码风格约定 原文:PEP 008 <Style Guide for Python Code> 下载(中文pdf): PythonCodingRule.pdf 进一步的: Google Python Style Guide Python

《自拍教程》Python编程风格规范

Python编程风格规范 根据Python官方提供的Python编程风格规范: Style Guide for Python Code, 即PEP8规范, https://www.python.org/dev/peps/pep-0008/ 我通过学习并翻译总结, 总结了以下几条编程风格规范,各位同学可考虑自行参考. 良好的编程风格规范可以凸显代码编写者是否专业, 并提高其他代码阅读者的易读性. 我面试过很多测试求职候选人,做笔试题的时候. 一看代码命名规范,就知道正点不正点了, 是不是老手. 阅

【python】python编码规范

PEP介绍 PEP是 Python Enhancement Proposal 的缩写,是Python增强建议书的意思. Python的代码风格由PEP 8描述.这个文档描述了Python编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的Python代码可以保持最大程度的相似风格.这样就易于阅读,易于在程序员之间交流. 命名规则 不同的命名风格 有许多不同的命名风格.以下的有助于辨认正在使用的命名风格,这独立于它们的作用. 小写串 (lowercase) 带下划线的小写串 (lower_