约定与 PEP 8

Python 中的软件工程原理

Adam Spannbauer

Machine Learning Engineer at Eastman

什么是约定?

碰拳

鞠躬的人

握手

Python 标志

Python 中的软件工程原理

PEP 8 简介

PEP 8

"代码被阅读的次数远多于被编写的次数"

Python 中的软件工程原理

违反 PEP 8

#define our data
my_dict ={
    'a'  : 10,
'b': 3,
    'c'  :   4,
             'd': 7}
#import needed package
import numpy as np
#helper function
def DictToArray(d):
    """Convert dictionary values to numpy array"""
    #extract values and convert
              x=np.array(d.values())
              return x
print(DictToArray(my_dict))
array([10,  4,  3,  7])
Python 中的软件工程原理

遵循 PEP 8

# Import needed package
import numpy as np

# Define our data
my_dict = {'a': 10, 'b': 3, 'c': 4, 'd': 7}


# Helper function
def dict_to_array(d):
    """Convert dictionary values to numpy array"""
    # Extract values and convert
    x = np.array(d.values())
    return x


print(dict_to_array(my_dict))
array([10,  4,  3,  7])
Python 中的软件工程原理

PEP 8 工具

在 PyCharm 中使用 PEP 8

pycodestyle 包

Python 中的软件工程原理

使用 pycodestyle

datacamp@server:~$ pip install pycodestyle
datacamp@server:~$ pycodestyle dict_to_array.py
dict_to_array.py:5:9: E203 冒号前的空格
dict_to_array.py:6:14: E131 悬挂缩进的续行未对齐
dict_to_array.py:8:1: E265 块注释应以 '# ' 开头
dict_to_array.py:9:1: E402 顶层导入不在文件开头
dict_to_array.py:11:1: E302 预期 2 个空行,发现 0 个
dict_to_array.py:13:15: E111 缩进不是 4 的倍数
Python 中的软件工程原理

pycodestyle 的输出

pycodestyle 错误输出

Python 中的软件工程原理

¡Vamos a practicar!

Python 中的软件工程原理

Preparing Video For Download...