文章目录

  • 1. 代码布局
    • 1.1 缩进一律采用4个空格
    • 1.2 换行
    • 1.3 行最大长度为79个字符
    • 1.4 空行
    • 1.5 文件编码
    • 1.6 import
  • 2. 引号
  • 3. 空格
    • 3.2 逗号后面如果是括号等则不加空格
    • 3.3 逗号、分号、冒号的前面不加空格
    • 3.4 分号作为切片时,前后都不要空格
  • 4. 注释
    • 4.1 行注释用 # ,且#与注释文本之间用空格隔开
    • 4.2 文本注释用3双引号对,三个双引号对之间的任何内容都是注释
  • 5. 命名规范
    • 5.1 变量名和函数名采用 小写+下划线模式
    • 5.2 类定义采用大写字母开头
    • 5.3 命名约定
    • 5.4 异常名
    • 5.5 常量用大写字母
  • 6. 表达语句
    • 6.1 用is...not... 而不是 not... is ...
    • 6.2 不要将lambda语句直接赋值给变量
    • 6.3 关于try...except...的用法

好的编程风格不仅可以提高工作效率,同时也是一个coder本身素养的体现。正对于python语言的编程风格,PEP8已经给出了很好的指导,按照PEP8写python,绝对是最佳的风格。
pep8英文原版地址: https://www.python.org/dev/peps/pep-0008/

1. 代码布局

1.1 缩进一律采用4个空格

缩进一律采用4个空格,拒绝TAB(制表符),更不能将空格和TAB混用。

1.2 换行

换行应该与上一行的同级元素对齐,一般采用两种形式: 采用圆括号(),方括号[], 或者花括号{}的隐式行连接来垂直对齐;或者是使用悬挂缩进对齐,悬挂缩进的第一行不应该有参数。

# 垂直对齐
foo = long_func_name(var_one, var_two,var_three,var_four):# 悬挂缩进
foo = long_func_name(var_one, var_two,var_three, var_four):

NOTE: 悬挂缩进第一行不能有参数,例如:

# 悬挂缩进,错误的示范
foo = long_func_name(var_one, var_two,var_three, var_four):

1.3 行最大长度为79个字符

不管什么情况,每行不能超过79个字符,而对于没有结构化限制的大块文本(包括文档字符和注释),每行字数不超过72个。

1.4 空行

顶层行数和类的定义,前后需要两个空格。
类中的方法之间用一个空格。

1.5 文件编码

python3.0以后全部采用utf-8编码,python3.0以前符合latin-1(ISO/IEC 8859-1)编码。
python2和python3在编码上有不同,所以存在很多不兼容的情况,例如pickle。

1.6 import

(1) 每个模块分开导入,同一个模块的不同子模块在一行导入

# 正确导入方式
# os和sys是不同的模块
import os
import sys# image 和 util 是nilearn中的不同子模块
from nilearn import image,util# 错误的导入方式
import os, sys

(2)import 通常放在代码文件的顶部,可以遵循以下3个顺序: 标准库,第三方库,本项目中的自有模块,每一组之间用空格分开。

# python标准库
import os
import sys# 第三方库
import numpy as np# 本项目中的自有模块
import project_module

(3)最好是采用绝对引用,明确的相对引用也可以接受
(4)尽量不要用通配符引用,例如:

# 尽量避免这种引用方式
from numpy import *

2. 引号

python中单引号(’)和双引号(")完全一样。

3. 空格

3.1 括号,方括号,花括号前后不加空格,但等号与括号之间加空格(函数参数除外)。

# 正确示例
foo = func(var_1=[1,2], var_2={'age': 5})
para_1 = (1,2,4)# 错误的示例
foo = func ( var_1 = [ 1, 2 ] )

3.2 逗号后面如果是括号等则不加空格

# 正确示范
a = (0,)# 错误的示范
a = (0, )

3.3 逗号、分号、冒号的前面不加空格

# 正确的示范
if x == 4:print(y, x)
# 错误的示范
if x == 4:print(y , x )

3.4 分号作为切片时,前后都不要空格

4. 注释

4.1 行注释用 # ,且#与注释文本之间用空格隔开

4.2 文本注释用3双引号对,三个双引号对之间的任何内容都是注释

# 这是行注释
x = 12     # 这也是行注释"""
这是文档注释
"""

5. 命名规范

在命名上存在多个风格,只是建议。

5.1 变量名和函数名采用 小写+下划线模式

var_one = 1;
def long_func_name():pass

5.2 类定义采用大写字母开头

class ClassOne():pass

5.3 命名约定

(1) 前后双下划线是python私有成员,对外部不可见,不能被导入

__name__ 等

(2)单下划线起始的函数为内部函数,不应该对外部可见

def _func_xxx():pass

5.4 异常名

所有的异常属于类,所以遵循类的命名风格(大写字母开始),并在异常名后面加上Error

ValueError

5.5 常量用大写字母

MAX_STEPS = 10000

6. 表达语句

6.1 用is…not… 而不是 not… is …

# yes
if foo is not None:print(foo)# no
if not foo is None:print(foo)

6.2 不要将lambda语句直接赋值给变量

# yes
def func(x):return(2*x)# no
f = lambda x: 2*x

6.3 关于try…except…的用法

python PEP8 记录相关推荐

  1. Python PEP8 编码规范中文版

    Python PEP8 编码规范中文版 2018年01月02日 19:21:09 阅读数:22140 标签: python 更多 个人分类: Python 原文链接:http://legacy.pyt ...

  2. python PEP8问题及解决

    1.shadows name 'xxxx' from outer scope 警告解决 在PyCharm中提示shadows name 'xxxx' from outer scope,当你在外部有个相 ...

  3. 由 method may be static 引发的 Python PEP8 总结

    前言 最近在进行Python开发的时候会遇到这个问题:PyCharm:method may be static,没啥问题,但一直影响代码美观,如下图 这是因为我们在类中所声明的方法没有使用类中的变量. ...

  4. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  5. python进阶记录之基础篇二十六_Python进阶记录之基础篇(十六)

    回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,需要重点掌握类的创建和对象的使用.今天我们继续讲一下Python中面向对象的相关知识点 ...

  6. python pep8模块_读懂PEP8,让你的Python代码更加优雅

    PEP8 <8 号 Python 增强规范>(Python Enhacement Proposal #8),简称PEP8 通俗的来讲 PEP8 是针对 python 代码格式而编订的风格指 ...

  7. python日志记录_Python日志记录

    python日志记录 To start, logging is a way of tracking events in a program when it runs and is in executi ...

  8. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  9. Python学习记录——英文名修改成标准格式

    Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...

最新文章

  1. 【WEB API项目实战干货系列】- API登录与身份验证(三)
  2. smack连接远程openfire连接超时-No response received within reply timeout. Timeout was 5000ms (~5s).
  3. 魔豆路由工程版体验:智能路由脱离手机的尝试
  4. 图像处理:边缘提取算法(边缘提取算子总结)——Matlab代码实现
  5. 一次绕过360+诺顿的提权过程
  6. opengl加载显示3D模型BVH类型文件
  7. Verify the Developer App certificate for your account is trusted on your device.
  8. P2261-[CQOI2007]余数求和【数论,约数】
  9. JBoss Fuse 6.2发布–指导如何快速尝试
  10. mysql server 5.0安装教程_MySQL Server 5.0安装教程
  11. UVA - 10817 Headmaster's Headache
  12. Vue Element-UI使用icon图标(第三方)--在线版
  13. Android Broadcast 和 BroadcastReceiver的权限限制
  14. 2021.7.28魔鬼训练报告
  15. 数据仓库--事实表和维度表
  16. 暴风影音怎么旋转视频?暴风影音旋转视频方法
  17. 美团外卖离线数仓建设实践
  18. 实验室服务器系统崩溃,选课系统崩溃解救报告
  19. phpwind 安装教程图文说明
  20. 医学图象存储、检索和显示的新技术及新动向

热门文章

  1. 导数法判断函数的单调性的策略【中阶和高阶辅导】
  2. ArcGIS常见问题汇总
  3. 太极计算机公司介绍ppt,智能家居产业背景研究.ppt
  4. webssh —— 浏览器上的终端
  5. Modbus转Profinet网关案例 | 三菱FR-A700系列变频器配置方法
  6. linux获取时间戳+时间戳转换日期
  7. Android 打包报 Invalid keystore format
  8. Mac打包生成dmg文件
  9. powermock跳过某方法_如何使用powermock验证内部方法调用?
  10. Chrome浏览器扩展学习之 - 添加书签