Effective Python 条目二:遵循PEP8风格规约

Python 增强建议#8,也被称为PEP8,是格式化Python代码的风格指引。只要符合语法,你可以随心所欲地写Python代码。然而,一致的风格使你的代码更加亲和与易于理解,及在一个大型社区中与其他Python程序员分享时促进协作。但是即使只有你自己一个人读你的代码,遵循这个风格规约将会使得以后修改起来更加容易。

PEP8有一些列丰富的关于怎样去编写清晰干净的Python代码的细节。随着Python语言的演变,它将会持续更新。这是非常值得去阅读整个在线规约的(http://www.python.org/dev/peps/pep-0008)。这里有一些规约你应该确保去遵循的:

空格:在Python里,空格是显著的语法。在代码清晰度上,Python程序员对空格的作用是特别敏感的。

  • 对于缩进,使用空格来替换Tab键;
  • 每一个语法上的缩进级别使用4个空格;
  • 行的长度应该是79个字符或者更少;
  • 长的表达式在下一行的延续缩进应该比正常缩进级别的额外多4个空格;
  • 在一个文件里,函数和类应该有两个空行分隔;
  • 在类里面,方法应该被一个空行分隔;
  • 不要再列表的索引,函数调用或者关键字参数赋值中添加空格;
  • 在变量赋值的前后,有且只添加一个空格。

命名:PEP8建议在这种语言的不同部分使用独立的命名风格。这将使得在阅读代码的时候,更加容易区分每一个名字对应的类型。

  • 函数,变量,和属性应该使用lowercase_underscore格式;
  • 保护型的实例属性应该使用_leading_underscore格式;
  • 私有的实例属性应该使用__double_leading_underscore格式;
  • 类和异常应该使用CApitalizedWord格式;
  • 模块级的常量应该使用ALL_CAPS格式;
  • 类的实例方法应该使用self作为第一个参数的名字(它指向这个对象);
  • 类方法应该使用cls作为第一个参数的名字(它指向这个类)。

表达式和声明:Python的哲学是:“应当只有一种——而且是最好的一种——明确的方式去做一件事。” 对于表达式和声明,PEP8在它的指引里尝试去修改这种风格。

  • 用内联的否定(if a is not b)代替肯定表达式的否定(if not a is b);
  • 不要通过检测长度(if len(somelist) == 0)来检测空值(比如[]或者‘’), 使用 if not somelist 来假设空值隐含评估是False;
  • 一些不是空值( 比如[1] 或 ‘hi’)的东西,语句if somelist 是隐含是True对于非空值;
  • 避免一行中包含if语句,for和while循环,和except复合语句,把它们分开在多行会更加清晰。
  • 总是吧import语句放在文件的顶部;
  • 当导入模块的时候总是使用模块的名字,不要依赖于当前模块所属的路径。比如:从bar包中导入foo模块,你应该使用:from bar import foo,不要仅仅是:import foo;
  • 如果你必须相对的导入,请使用明确地语法:from . impor foo;
  • 各部分中的导入应该遵循以下顺序:标准库模块,第三方库模块,你自己的模块。每一个字部分的导入应该按照字母排序。

NOTE:



Pylint 工具(http://www.pylint.org/) 是一个很流行的Python源码静态分析器,Pylint提供了在Python程序中对于PEP8风格规约和检查多种其它通用错误的类型的自动化检查。

想想和记下来


  • 当写Python代码的时候,总是遵循PEP8风格规约;
  • 在一个大的Pthon社区中与他们进行协作交流是采用一个通用的风格;
  • 使用一致的风格使得你的代码在今后更容易修改。

转载注明出处



原文(英文):effective python, item 2

译文(中文):http://www.cnblogs.com/reanote/p/effective_python_item_2

备注(提示):版权归原作者所有,如侵犯您的版权,请邮件联系我,我将会收到通知后,尽快删除!

时间: 2024-08-08 17:18:53

Effective Python 条目二:遵循PEP8风格规约的相关文章

Effective Python 条目一:知道你现在用的Python是哪个版本

条目一:知道你现在用的Python是哪个版本 在这本书里,主要实例的代码是Python3.4(发布于2014年3月17日)的语法.这本书也提供一些Python2.7(发布于2010年七月3日)语法的例子去强调不同之处.我的大部分建议都可应用到流行的Python运行时库:CPython, Jython, IronPython, PyPy, etc. 很多计算机预装了多个版本的标准CPython运行时库.然而,命令行中默认的python并不清晰.python通常是python2.7的别名,但是有时候

遵循PEP8风格指南

整理来自 effective python 一 空白 1 使用space来标识缩进,而不是tab 2 和语法相关的每层缩进都使用4个空格 3 每行的字符数不应该超过79 4 对于多行的表达式,除了首行,其他行再缩进4个空格 5 文件中的函数和类之间用两个空行隔开 6 同一个类中,各个函数使用一个空行隔开 7 在使用下标来获取元素,调用函数或者给关键字赋值的时候,不要再两旁添加空格 8 为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只写一个就好 二 命名 1 函数,变量及属性应该

Effective Python

Effective Python 1.确认自己所用的Python版本 优先使用python3,抛弃python2 查看python版本信息: python --versosn 2.遵循PEP8风格指南 采用一致的编码风格令代码更加易读,利于多人协作 绝对应该遵守的规则 空格 (1)使用space来表示缩进,而不要使用tab (2)和语法相关的每一层缩进都用4个空格来表示 (3)每行的字符不应超过79 (4)对于多行长表达式,除了首行之外的其余各行都应该在通常的缩进级别之上再加4个空格 (5)文件

PEP8风格和python版本区别

python解释器 官方Cpython C语言开发,最广泛的Python解释器 IPython 一个交互式,功能增强的Cpython PyPy Python语言写的Python解释器,JIT技术,动态编译Python代码 Jython Python的源码编译成Java的字节码,跑在JVM上 IronPython 与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码 版本区别 2.X和3.X区别 语句函数化,例如print(1,2)打印出1 2,但是2.x中意

Effective Python之编写高质量Python代码的59个有效方法

                                                     这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值.下面将以最简单的方式记录这59条建议,并在大部分建议后面加上了说明和示例,文章篇幅大,请您提前备好瓜子和啤酒! 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,python2和pyt

Pycharm配置autopep8教程,让Python代码更符合pep8规范

一.何为pep8? PEP 8官方文档 -- Style Guide for Python Code PEP8中文翻译(转) 二.Pycharm中配置pep8 Pycharm本身是有pep8风格检测的,当你敲得代码中不符合规范时,会有下划波浪线提示.如何让代码修改为符合规范,去掉这些难看的波浪线呢?下面介绍步骤: 2.1安装autopep8 cmd窗口输入:pip install autopep8 2.2在Pycharm中安装autopep8配置 Tools→Extends Tools→点击加号

python 小插曲:编码风格

语言以不同的格式被编写(被格式化)即可读性.(让其他人轻松阅读你的代码) python大多数遵循PEP8的风格指南 要点: 使用4个空格缩进,不要使用制表符. 4个空格是一个在小缩进(允许更大的嵌套深度)和大缩进(更容易阅读)的一种很好的折中方案.制表符会引入混乱,最好不要使用它. 换行,使一行不超过79个字符. 这有助于使用小型显示器的用户,并且可以在较大的显示器上并排放置多个代码文件. 使用空行分隔函数和类,以及函数内的较大的代码块. 如果可能,把注释放到单独的一行. 使用文档字符串. 在运

从代码中学Python语法二(持续更新)

# -*- coding:utf-8 -*- __author__ = 'hunterhug' #x = int(input("请输入一个数:\n")) x=5 if x < 0: print("<0") elif x == 0: print("0") else: print(">0") str=['fds', 'sdfsdf', '2',"h"] for k in str: print(

条目二十六《iterator优先于const_iterator、reverse_iterator以及const_reverse_iterator》

条目二十六<iterator优先于const_iterator.reverse_iterator以及const_reverse_iterator> 这几个东西不是类型来的,而是不同的类,所以强制转换的话是不行的,所以别把C风格的强制转换类型用在这里. 它们之间存在着隐式转换. iterator -> const_iterator iterator -> reverse_iterator const_iterator -> const_reverse_iterator 或者显示