Python 重构技巧,让你的代码更 Pythonic

2023-11-29 00:50:09 字數 2300 閱讀 3332

在本文中,我将向您展示多个 python 重构技巧,以获得更简洁、更 pythonic 的**。

与其像这样嵌套 if 语句,不如将它们合并为一个。

if a:

if b:pass

# 重构。if a and b:

pass

要检查列表中是否至少有一个元素是正数。常见的解决方案是遍历所有数字,检查当前数字,然后在条件为 true 时退出循环。但是对于这类问题,更好的方法是使用 python 中的 any() 函数。如果可迭代对象的任何一个元素为 true,则 any() 函数返回 true。**要比循环要短得多,也更像 pythonic。

numbers = 5, -1, -7, 6, 0, -8]

has_positives = false

for n in numbers:

if n > 0:

has_positives = true

break# 重构。

has_positives = any(n > 0 for n in numbers)

如果使用 if-else 语句来设置变量的值,可以在一行中使用 if 语句。

if condition:

x = 1else:

x = 2# 重构。

x = 1 if condition else 2

当需要检查序列中是否有元素时,不需要使用 len() 函数。 可以直接判断,这是 pep8 推荐的方式,也称为真值测试。

if len(lst) >0:

pass# 重构。

if lst:

pass

声明一个空列表,然后追加元素,不如直接使用所有元素初始化列表。这样可以缩短**并使意图更加明确。因为避免了对 append() 函数的调用,性能也略高。这同样适用于其他类型,如集合和字典。

lst = 

lst.append("jack")

lst.append("max")

lst.append("petter")

# 重构。players = jack", max", petter"]

如果我们需要遍历列表,并且需要同时跟踪索引和当前项,请使用内置函数 enumerate()而不是 range()。这将以元组的形式返回当前索引和当前项。

for i in range(len(lst)):

print(i, lst[i])

# 重构。for i, j in enumerate(lst):

print(i, j)

当我们需要返回 true 或 false 时,常见的方法是进行条件判断,然后返回 true 或 false。但是,直接返回结果,**会更整洁。

def function():

if isinstance(a, b) or issubclass(b, a):

return true

return false

# 重构。def function():

return isinstance(a, b) or issubclass(b, a)

应该注意的是,只有当表达式的计算结果为布尔值时,才能这样做。

如果我们反复检查同一变量与多个值,可以通过使用 in 运算符来简化。

def process_payment(payment, currency):

if currency ==usd" or currency ==eur":

process_standard_payment(payment)

else:process_international_payment(payment)

# 重构。def process_payment(payment, currency):

if currency in ["usd", eur"]:

process_standard_payment(payment)

else:process_international_payment(payment)

❝文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。

Python 中如何让你的代码免受无限循环的影响

python 以其简易和可读性而闻名,是一种广受欢迎编程语言。然而,python 的灵活性也意味着它容易受到无限循环的影响,即程序陷入永无止境的循环中。在本文中,我们将 导致无限循环的原因,并提供实际的例子和策略来避免它们。当程序连续循环执行特定的 块而从未达到退出循环的条件时,就会发生无限循环。这...

11个让你体重不断下降的小技巧,让体重从130下降到95斤

大家好,我是营养师姚小谦,专注健康 年,累计帮助万人成功原创不易,关注我有更多惊喜!不少粉丝跟我说,由于工作压力 不正确的饮食习惯和缺乏锻炼,发现自己的体重越来越难以控制。如果你也在为体重上升而苦恼,那么今天我就来分享个小技巧,帮助你轻松 有个粉丝照着做,从斤降至斤。.制定明确的目标 首先,你需要明...

因 盒 而来 英码科技 深元 的AI重构与工具革命!

的aiot战场,硝烟愈烈 内卷更甚,也风起云涌。风起于青萍之末,aiot自融入千行百业以来,直面产业 融入场景 提质增效就是其最初之想与未来之愿。如果以安防视角看,与aiot日渐交融 兼蓄并发,打通价值发现 创新使能 持续运营的应用闭环,进而从场景中来,到场景中去。这一战场,一众厂家在产品 技术 资...