1.编码

  1. 如无特殊情况,文件一律使用utf-8编码
  2. 如无特殊情况,文件头部必须添加# -*- coding:utf-8 -*- 标志

2.代码

  1. 统一使用四个空格缩进
  2. 每行代码不超过80个字符
  3. 自然语言使用双引号,如input里面,或者错误信息,正则表达式使用原生的双引号r" ",
  4. 机器标识使用单引号,如dict里面的key,因此代码里面多数应该使用单引号。
  5. 文档字符串使用三个双引号。""" """

3.空行

  1. 模块级函数和类定义之间空两行
  2. 类成员函数之间空一行
  3. 可以使用多个空行分隔多组相关函数
  4. 函数中可以用空行分隔出逻辑相关的代码
class A:

    def __init__(self):
pass def hello(self):
pass def main():
pass

4.import语句

  1. import 语句应当分行书写
  2. import语句应当使用absolute import
  3. import语句应当放在文件头部,置于模块说明及docstring之后,全局变量之前
  4. import语句应该按照顺序排列,每组之间用一个空格分隔,按照内置模块,第三方模块,自己所写的模块调用顺序,同时每组内部按照字母表顺序排列
#Right
import os
import sys from subprocess import Popen, PIPE from foo.bar import Bar #False
import os, sys
from ..bar import Bar

5.空格

在二元运算符两边各空一格:[=, - ,+ =, > , in , is ,not , and]

i = i + 1
x = x * x + 2
c = (a + b) * (a - b)

函数的参数列表中,","之后要有空格,默认值等号两边不要添加空格,左括号之后,右括号之前不要有空格

def complex(real, image=0):
pass

6.换行

python支持括号内的换行,这时有两种情况:

1.第二行缩进到括号的起始处

2.第二行缩进四个空格,适用于起始括号就换行的情形

a = list(var1, var2,
var3) a=list(
var1,
var2,
var3)

7.注释

#号后需空一格,不要使用无意义的注释

x = x + 1 # 边框加粗一个像素

8.docstring

1.所有公共模块,函数,类,方法都应该有docstring。

9.命名规范

  • 应避免使用小写字母l,大写字母O或I单独作为一个变量,以区分数字1和0.
  • 包和模块使用全小写命名,,尽量不要使用下划线
  • 类名使用CamelClass命名风格,内部类可用一个下划线开头
  • 函数使用下划线分隔的小写命名
  • 常量使用以下划线分隔的大写命名
MAX_OVERFLOW = 100

class FooBar:

    def foo_bar():
pass
  • 单字符命名应该尽量避免,除了计数器和迭代器
  • 模块名尽量小写命名,首字母小写,尽量不要使用下划线(除非多个单词且数量不多的情况)
  • 类名:首字母大写,私有类可以用一个下划线开头
  • 将相关的类和顶级函数放在同一个模块中,没必要限制一个类一个模块
  • 函数名:一律小写,如有多个单词一律用下划线隔开
  • 私有函数在函数名前加一个下划线
  • 变量名尽量小写,如有多个单词,用下划线隔开
  • 常量采用全大写,如有多个单词,使用下划线隔开
#False
s = "Hello World"
l = 1
import Decoder #True
class Farm():
class Animal():
class _PrivateFarm():
def run():
count = 0
school_name = "xidian"
MAX_CLIENT = 100

10.程序设计规范

1.尽量不要直接将代码写在模块顶层,在执行主程序之前总是检查:if __name__ = '__main__',这样模块被导入主程序时就不会被执行了

#wrong
do_something() #right
def main():
do_something(): if __name__ == '__main__':
main()

所有的顶层代码在模块导入时都会被执行,要小心不要去调用函数,创建对象,或者执行哪些不该被执行的操作

尽量不要用+号拼接字符串,使用join函数拼接

在不复杂的情况下,尽量多用列表生成式,可以是代码更清晰

尽量使用map和filter等内置函数而不是自己去写循环

正则表达式之前一律加r,正则表达式使用之前一律编译好。

Python PEP8标准的更多相关文章

  1. Python pep8代码规范

    title: Python pep8代码规范 tags: Python --- 介绍(Introduction) 官方文档:PEP 8 -- Style Guide for Python Code 很 ...

  2. 【python】标准库的大致认识

    正如那句 Python 社区中很有名的话所说的:“battery included”,Python 的一大好处在于它有一套很有用的标准库(standard library).标准库是随着 Python ...

  3. python 使用标准库连接linux实现scp和执行命令

    import stat import pexpect 只显示关键代码: sqldb = localpath+database //获取database名字 if os.path.exists(sqld ...

  4. Python的标准库介绍与常用的第三方库

    Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...

  5. Python 3标准库 第十四章 应用构建模块

    Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章   ...

  6. 【翻译】Python PEP8编码规范(中文版)

    原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style Guide for Python Code ...

  7. python——PEP8 Python 编码规范整理

    决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...

  8. python pep8编码风格学习记录(转)

    简要归纳 每个缩进层级使用4个空格. 每行最多79个字符. 顶层的函数或类的定义之间空两行. 采用ASCII或UTF-8编码文件 在文件顶端,注释和文档说明之下,每行每条import语句只导入一个模块 ...

  9. python PEP8常用规范

    python 常用PEP8规范   一 代码编排 1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号 ...

随机推荐

  1. JZOJ5822 【NOIP提高A组模拟2018.8.16】 量子纠缠

    这是一道很巧妙的题目. 今早,我调了好久,终于将它切掉了-- 题目 Description Input 第一行包含一个正整数 m,代表操作数. 接下来 m 行,每行可能有以下形式: 1 s 代表将数字 ...

  2. Python开发之MySQL安装

    MySQL下载安装后再安装破解版本的Navicat图形化数据库工具即可.   安装python后.再进行如下操作(也可以安装好虚拟环境virtualenv 或者增强工具pip install virt ...

  3. LUOGU P4195 Spoj3105 Mod

    题面 bsgs问题.因为p可能不为质数,所以我们将原先解题的式子变形 每次除以p与a的最大公约数,直到最大公约数为1或b不能整除为止 代码 #include<iostream> #incl ...

  4. 主成分分析(PCA)原理详解_转载

    一.PCA简介 1. 相关背景 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律.多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上 ...

  5. php表单字段

    在上一章节我们已经介绍了表的验证规则,我们可以看到"Name", "E-mail", 和 "Gender" 字段是必须的,各字段不能为空. ...

  6. Spring注解驱动开发(六)-----spring容器创建【源码】

    Spring容器的refresh()[创建刷新] 1.prepareRefresh()刷新前的预处理 1).initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法 ...

  7. python简单爬豆瓣电影排名

    爬豆瓣电影 网站分析: 1 打开https://movie.douban.com,选择  [排行榜],然后随便选择一类型,我这里选择科幻    2 一直浏览网页,发现没有下一的标签,是下滑再加载的,可 ...

  8. std::map插入失败会返回什么

    总所周知,map不能存在2个相同的key,那么如果是后插入的key,对应的value不会添加上去,也不会覆盖原来的,此时会返回一个std::pair<iterator,bool>,可以根据 ...

  9. 【python之路32】python异常处理

    一.捕获异常 1.try  except #!usr/bin/env python # -*- coding:utf-8 -*- num = input("请输入一个数字:") t ...

  10. Django项目:CRM(客户关系管理系统)--30--22PerfectCRM实现King_admin数据添加

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html # king_urls.py # ————————02PerfectCRM创建ADMIN页面—— ...