在本文中,我将向您展示多个 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日渐交融 兼蓄并发,打通价值发现 创新使能 持续运营的应用闭环,进而从场景中来,到场景中去。这一战场,一众厂家在产品 技术 资...