编写更好的Python函数¶
好的命名¶
There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
下面是一个不好的函数名
def get_knn_from_df(df):
def k_nearest_neighbors(dataframe):
from typing import List, Tuple
from scipy import DataFrame
def k_nearest_neighbors(dataframe: DataFrame) -> List[Tuple[int, int]]:
"""
:param {DataFrame} dataframe: 原始数据
:returns {List[Tuple[int, int]]}: 最近邻计算结果
"""
单一原则¶
一个函数只做一件事情
文档清晰¶
虽然每个人似乎都知道 PEP-8,它定义了Python 的样式指南,但似乎很少有人知道 PEP-257,它对文档字符串也有同样的指南。
- 每个函数都需要一个文档字符串
- 使用正确的语法和标点符号;写出完整的句子
- 开始以一句话总结函数的作用
- 使用规定性而非描述性语言
要养成总是编写文档字符串的习惯,并在为函数编写代码之前尝试编写它们。 如果你不能写出一个清晰的文档字符串来描述函数将做什么, 这表明你首先需要更多地思考为什么要编写函数
有返回值¶
在Python里即使不显示return,实际上Python也会帮你返回None。函数通常 被认为是一个一个的功能单元,不返回任何东西是有点奇怪的
不超过50行¶
没啥说的,太长就要想想怎么重构一下
幂等¶
幂等性保证了可以测试