python代码重构技巧_6 个例子教你重构 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_PRICE

else:

total = sold * PRICE

label = 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()

4. 使用 any() 而不是用于循环

常见的模式是,我们需要查找是否集合中的一个或多个项符合某些条件。这可以通过 for 循环完成,例如:

found = False

for thing in things:

if thing == other_thing:

found = True

break

更简洁的方法,是使用 Python 的 any() 和 all()内置函数,来清楚地显示代码的意图。

found = any(thing == other_thing for thing in things)

当至少有一个元素计算为 True 时,all() 将返回 True,只有当所有元素都计算为 True 时,all() 将返回 True。

如果对 any() 的调用找到一个值值为 True 的元素,它可以立即返回。

5. 用[]替换list()

创建列表的最简洁和 Pythonic 的方法是使用 []。

x = []

x = ['first', 'second']

这样做有额外的优点:是一个很好的改进程序性能的方法。

以下是更改之前和之后的时间对比:

$ python3 -m timeit "x = list()"

5000000 loops, best of 5: 63.3 nsec per loop

$ python3 -m timeit "x = []"

20000000 loops, best of 5: 15.8 nsec per loop

同样的原因和性能表现,使用{}替代dict()。

6. 将重复执行的语句移出for/while循环

将“不变的”语句从循环中移出。如果某条语句只是设置了一些变量供循环使用,则不需要在循环中。循环本身就是复杂的,因此在编写循环时,应牢记,使其更短、更容易理解。

在此示例中,city变量在循环中赋值,但它只读取且不更改。

for building in buildings:

city = 'London'

addresses.append(building.street_address, city)

因此,将其移出是安全的,这更清楚地说明,相同的city值将应用于每个building变量。

city = 'London'

for building in buildings:

addresses.append(building.street_address, city)

这也是提高了程序性能 ,因为如果循环中的任何语句将在每次循环运行时执行。在这些多次执行上花费的时间属于浪费,因为它只需要执行一次。如果语句涉及对数据库的调用或其他耗时的任务,则这种节省可能非常重要。

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python代码重构是指对现有的Python代码进行修改和优化,以提高代码的可读性、可维护性和效率。以下是几个常见的Python代码重构技巧: 1. 合并嵌套的if语句。将多个嵌套的if语句合并成一个更简洁的条件表达式,可以提高代码的可读性和简洁性。 2. 使用函数来封装重复代码片段。如果在代码中存在重复代码片段,可以将其封装为一个函数,提高代码的可维护性和复用性。 3. 使用列表解析或生成器表达式代替for循环。列表解析和生成器表达式可以简化代码并提高执行效率。 4. 使用内置函数和方法代替自定义的功能。Python提供了许多内置函数和方法,可以简化代码并提高执行效率。 5. 使用适当的数据结构和算法。选择合适的数据结构和算法可以提高代码的运行效率和性能。 6. 遵循Pythonic的编码风格。Pythonic是指符合Python最佳实践和编码风格的代码。遵循Pythonic的编码风格可以使代码更加简洁和易读。 7. 优化代码的性能。通过使用适当的算法和数据结构、减少重复计算、避免不必要的循环等方式,可以提高代码的性能。 这些重构技巧可以帮助改进Python代码的质量,并使其更加Pythonic,即符合Python的设计哲学和最佳实践。通过重构代码,可以使代码更易于理解、扩展和维护。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [8个重构技巧使得Python代码Pythonic](https://blog.csdn.net/weixin_38754337/article/details/128945714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python函数综合案例.md](https://download.csdn.net/download/qq_42431718/88241199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值