前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python PEP8 记录

python PEP8 记录

作者头像
锦小年
发布2019-05-28 18:21:09
7150
发布2019-05-28 18:21:09
举报
文章被收录于专栏:锦小年的博客锦小年的博客

版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 https://cloud.tencent.com/developer/article/1437413

好的编程风格不仅可以提高工作效率,同时也是一个coder本身素养的体现。正对于python语言的编程风格,PEP8已经给出了很好的指导,按照PEP8写python,绝对是最佳的风格。

pep8英文原版地址:https://www.python.org/dev/peps/pep-0008/

1. 代码布局

1.1 缩进一律采用4个空格

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

1.2 换行

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

代码语言:javascript
复制
# 垂直对齐
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: 悬挂缩进第一行不能有参数,例如:

代码语言:javascript
复制
# 悬挂缩进,错误的示范
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) 每个模块分开导入,同一个模块的不同子模块在一行导入

代码语言:javascript
复制
# 正确导入方式
# os和sys是不同的模块
import os
import sys

# image 和 util 是nilearn中的不同子模块
from nilearn import image,util

# 错误的导入方式
import os, sys

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

代码语言:javascript
复制
# python标准库
import os
import sys

# 第三方库
import numpy as np

# 本项目中的自有模块
import project_module

(3)最好是采用绝对引用,明确的相对引用也可以接受

(4)尽量不要用通配符引用,例如:

代码语言:javascript
复制
# 尽量避免这种引用方式
from numpy import *

2. 引号

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

3. 空格

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

代码语言:javascript
复制
# 正确示例
foo = func(var_1=[1,2], var_2={'age': 5})
para_1 = (1,2,4)

# 错误的示例
foo = func ( var_1 = [ 1, 2 ] )

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

代码语言:javascript
复制
# 正确示范
a = (0,)

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

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

代码语言:javascript
复制
# 正确的示范
if x == 4:
	print(y, x)
# 错误的示范
if x == 4:
	print(y , x )

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

4. 注释

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

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

代码语言:javascript
复制
# 这是行注释
x = 12     # 这也是行注释

"""
这是文档注释
"""

5. 命名规范

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

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

代码语言:javascript
复制
var_one = 1;
def long_func_name():
	pass

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

代码语言:javascript
复制
class ClassOne():

	pass

5.3 命名约定

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

代码语言:javascript
复制
__name__ 等

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

代码语言:javascript
复制
def _func_xxx():
	pass

5.4 异常名

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

代码语言:javascript
复制
ValueError

5.5 常量用大写字母

代码语言:javascript
复制
MAX_STEPS = 10000

6. 表达语句

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

代码语言:javascript
复制
# yes
if foo is not None:
	print(foo)

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

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

代码语言:javascript
复制
# yes
def func(x):
	return(2*x)

# no
f = lambda x: 2*x

6.3 关于try…except…的用法

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 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…的用法
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档