Python常用PEP8编码规范和建议

缩进

每级缩进用4个空格。

括号中使用垂直隐式缩进或使用悬挂缩进。

EXAMPLE:
# (垂直隐式缩进)对准左括号
foo = long_function_name(var_one, var_two,
var_three, var_four)

# (悬挂缩进) 一般情况只需多一层缩进
foo = long_function_name(
var_one, var_two,
var_three, var_four)

# (悬挂缩进) 但下面情况, 需再加多一层缩进, 和后续的语句块区分开来
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)

# 右括号回退
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)

错误示范:
# 不使用垂直对齐时,第一行不能有参数。
foo = long_function_name(var_one, var_two,
var_three, var_four)

# 参数的悬挂缩进和后续代码块缩进不能区别。
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)

# 右括号不回退,不推荐
my_list = [
1, 2, 3,
4, 5, 6,
]

result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)

最大行宽

每行最大行宽不超过 79 个字符

一般续行可使用反斜杠

括号内续行不需要使用反斜杠

EXAMPLE:
# 无括号续行, 利用反斜杠
with open('/path/to/some/file/you/want/to/read') as file_1, \
open('/path/to/some/file/being/written', 'w') as file_2:
file_2.write(file_1.read())

# 括号内续行, 尽量在运算符后再续行
class Rectangle(Blob):

def __init__(self, width, height,
color='black', emphasis=None, highlight=0):
if (width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100):
raise ValueError("sorry, you lose")
if width == 0 and height == 0 and (color == 'red' or
emphasis is None):
raise ValueError("I don't think so -- values are %s, %s" %
(width, height))

空行

两行空行用于分割顶层函数和类的定义

单个空行用于分割类定义中的方法

EXAMPLE:
# 类的方法定义用单个空行分割,两行空行分割顶层函数和类的定义。
class A(object):
def method1():
pass

def method2():
pass

def method3():
pass

模块导入

导入的每个模块应该单独成行

导入顺序如下: (各模块类型导入之间要有空行分割,各组里面的模块的顺序按模块首字母自上而下升序排列)

标准库
相关的第三方库
本地库

EXAMPLE:
# 按模块首字母排序导入, 依此递推
import active
import adidas
import create

错误示例:
# 一行导入多模块
import sys, os, knife

# 不按首字母导入
import create
import active
import beyond

字符串

单引号和双引号作用是一样的,但必须保证成对存在,不能夹杂使用.
(建议句子使用双引号, 单词使用单引号, 但不强制.)

EXAMPLE:
# 单引号和双引号效果一样
name = 'JmilkFan'
name = "Hey Guys!"

表达式和语句中的空格
括号里边避免空格

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

错误示例:
spam( ham[ 1 ], { eggs: 2 } )

逗号,冒号,分号之前避免空格

EXAMPLE:
if x == 4: print x, y; x, y = y, x

错误示例:
if x == 4 : print x , y ; x , y = y , x

函数调用的左括号之前不能有空格

EXAMPLE:
spam(1)
dct['key'] = lst[index]

错误示例:
spam (1)
dct ['key'] = lst [index]

赋值等操作符前后不能因为对齐而添加多个空格

EXAMPLE:
x = 1
y = 2
long_variable = 3

错误示例:
x = 1
y = 2
long_variable = 3

二元运算符两边放置一个空格
涉及 = 的复合操作符 ( += , -=等)
比较操作符 ( == , < , > , != , <> , <= , >= , in , not in , is , is not )
逻辑操作符( and , or , not )

EXAMPLE:
a = b
a or b

# 括号内的操作符不需要空格
name = get_name(age, sex=None, city=Beijing)

注释

注释块
注释块通常应用在代码前,并和代码有同样的缩进。每行以 ‘# ’ 开头, 而且#后面有单个空格。

EXAMPLE:
# Have to define the param `args(List)`,
# otherwise will be capture the CLI option when execute `python manage.py server`.
# oslo_config: (args if args is not None else sys.argv[1:])
CONF(args=[], default_config_files=[CONFIG_FILE])

单行注释(应避免无谓的注释)

EXAMPLE:
x = x + 1 # Compensate for border

文档字符串

用户喜欢...

干货 WiFi产品常用射频功率放大器汇总

在这些年的WiFi产品开发中,接触了多种型号的射频功率放大器(以下简称PA),无线时代对WiFi产品中常用的射频功率放大器做个汇总,供读者参考。本文中部分器件型号是Frontend Module,即包含...


让你生活更简单的几个不常用的Linux命令

作为一个软件工程师,学习Linux是我做过的最好的时间投资。因为它是一个用户必须理解和维护的系统,每天的使用经验就像在水坑中添加一滴水一样。很长时间以后,水坑就变成了湖泊,甚至...


使用 Micro Python 快速开发基于实时微控制器的应用程序

实时嵌入式系统变得非常复杂,不仅要深入了解复杂的 32 位微控制器,还要了解传感器、算法、因特网协议以及各种不同的终端用户应用。随着开发周期缩短和功能增多,开发团队需要设法加...


Unity架构常用的几种方式

对于初学者来说,视频《Unity项目架构设计与开发管理》(),全是干货。简单的总结了一下,Unity的架构有如下几种常用的方式。 1、EmptyGO: 在Hierarchy上创建一个空的GameObject,然后挂上所有与...


Linux常用指令及操作

Linux 常用指令 使用命令man+【具体指令名称】可以查看该指令的详细使用方式 Ubuntu用户首次设置root用户密码: 在终端输入命令 sudo passwd,输入当前用户的密码然后回车进行设置 ls 显示文件或...


盘点·GitHub最著名的20个Python机器学习项目

开源是技术创新和快速发展的核心。这篇文章向你展示Python机器学习开源项目以及在分析过程中发现的非常有趣的见解和趋势。 我们分析了GitHub上的前20名Python机器学习项目,发现scikit-Lear...


Python基础语法-常量与变量

Python是一门强类型的动态语言。 字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的。 变量:变量在赋值时被创建,它可以是任何对象的引...


英国伯明翰大学团队使用Theano,Python,PYNQ和Zynq开发定点Deep Recurrent神经网络

可编程逻辑(PLD)是由一种通用的集成电路产生的,逻辑功能按照用户对器件编程来确定,用户可以自行编程把数字系统集成在PLD中。经过多年的发展,可编程逻辑器件由70年代的可编程逻辑阵...


【活动】《MicroPython入门指南》正式出版了,进微信群一起交流!

第一本专门介绍MicroPython的中文图书《MicroPython入门指南》由电子工业出版社正式出版了。 《MicroPython入门指南》 作者:邵子扬 MicroPython是近年开源社区中最热门的项目之一,它功能强大,使...


Python Web 开发框架 Django 2.0 发布

流行 Python Web 开发框架 Django 释出了 2.0 版本。主要变化包括:停止支持 Python 2 系列,Django 1.11.x 是支持 Python 2.7 的最后版本,Django 2.0 支持 Python 3.4、3.5 和 3.6,其中 Python 3.4 将于 2019 年 3...


电路设计中三种常用接地方法

地线也是有阻抗的,电流流过地线时,会产生电压,此为噪声电压,而噪声电压则是影响系统稳定的干扰源之一,不可取。所以,要降低地线噪声的前提是降低地线的阻抗。 众所周知,地线...


机器学习:朴素贝叶斯--python

今天介绍机器学习中一种基于概率的常见的分类方法,朴素贝叶斯,之前介绍的KNN, decision tree 等方法是一种 hard decision,因为这些分类器的输出只有0 或者 1,朴素贝叶斯方法输出的是某一类...


10种常用电感的特性比较分析

10种常用电感罗列 1:工字型电感; 2:色环电感; 3:空芯电感: 4:环形线圈电感; 5:贴片叠层高频电感; 6:磁棒电感; 7:SMD贴片功率电感; 8:穿心磁珠 9:贴片磁珠; 10:贴片高频变压器,插件高频变压器; 归纳...


机器学习:决策树--python

今天,我们介绍机器学习里比较常用的一种分类算法,决策树。决策树是对人类认知识别的一种模拟,给你一堆看似杂乱无章的数据,如何用尽可能少的特征,对这些数据进行有效的分类。...


PYNQ 用Python运行FPGA

PYNQ介绍 PYNQ全称为Python Productivity for Zynq,即在原有Zynq架构的基础上,添加了对python的支持。Zynq是赛灵思公司推出的行业第一个可扩展处理平台系列,在芯片中集成了ARM处理器和FPGA可编程逻...


使用CircuitPython开发板简化基于ARM®Cortex®-M0 +的物联网嵌入式设计

许多嵌入式应用使用先进的MCU,但只需要基本的硬件控制功能,而不需要高级嵌入式设计的硬实时要求。开发商和制造商经常沉浸在硬件设计,C / C ++编程和实时操作系统的细节中。幸运的是,...