3个例子教你重构 Python 代码

1. 合并嵌套的 if 条件

 

太多的嵌套会使代码难以理解,这在 Python 中尤为如此,因为 Python 没有括号来帮助区隔不同的嵌套级别。

 

阅读深度嵌套的代码容易让人烦躁,因为你必须理清哪些条件属于哪一级。因此,我们应尽可能减少嵌套,如果两个条件可以用 and 合在一起,会比嵌套更易读。

 

合并之前:

if a:    if b:        return c

合并后:

if a and b:    return c

2. 将重复的代码移到条件语句之外

 

我们应该始终寻找移除重复代码的方法。这是提升代码能力的好办法。

 

有时,在条件的两个分支上出现重复代码,这意味这段代码将始终执行。因此这段重复的代码可以从条件中移出,放在条件之外执行。

if sold > DISCOUNT_AMOUNT:    total = sold * DISCOUNT_PRICE    label = f'Total: {total}'else:    total = sold * PRICE    label = f'Total: {total}'

 

通过将对label变量赋值移到到条件之外,我们删除了重复的代码行,并明确了条件实际控制的内容,就是计算total。

if sold > DISCOUNT_AMOUNT:    total = sold * DISCOUNT_PRICEelse:    total = sold * PRICElabel = f'Total: {total}'

3. 将内部循环中的yield替换为yield from

 

经常忽略的一个小窍门是 Python 的yield关键字有对应的为collections准备的yield from。因此无需使用 for 循环遍历集合。这使代码变短,并删除 for 中的额外变量。而且消除 for 循环后,yield from使程序运行效率提高约 15%。

 

重构前:

def get_content(entry):    for block in entry.get_blocks():        yield block

重构后:

def get_content(entry):    yield from entry.get_blocks()

posted on 2021-01-25 10:26  数据派  阅读(174)  评论(0编辑  收藏  举报