刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!
在本文中,刷新我总结了 6 种 Python 编写方式案例。认知
1.不要导入根模块
在使用 Python 时,种让直用我们无法避免的程序一件事是导入模块,无论是变慢内置模块还是第三方模块。有时,习惯我们可能只需要该模块中的刷新一个或几个函数或对象。在这种情况下,认知我们应该尝试只导入我们需要的种让直用函数或对象,而不是程序导入根模块。
这是变慢一个简单的例子。假设我们需要计算程序中某些数字的习惯平方根。
较慢的刷新示例
在不好的例子中,我们导入了 math 模块,认知并使用 math.sqrt() 来访问该函数。种让直用当然,它没有任何问题,但如果我们可以导入 sqrt() 函数,性能会更好。
更快的例子

2.避免使用点/点链
使用 dot 非常直观。在 Python 中访问对象的源码库属性或函数。大多数时候,没有问题。但是,如果我们可以避免使用点甚至链接点,性能实际上会更好。
下面的示例显示将数字附加到列表中,然后将其删除。
较慢的示例



如果你不相信这实际上做同样的事情,我们可以验证它。

我可以预料到许多 Python 开发人员会跳出来说这个例子中的技术有点荒谬。事实上,即使是我自己,我也很少像上面那样写代码。然而,很高兴知道我们可以这样编程,甚至可以让它更快。
如果我们想附加到一个列表并从中删除数百万次的项目,我们可能应该考虑使用这个技巧。这就是为什么我们需要平衡代码的性能和可读性。
3.不要使用 + 连接字符串
字符串在 Python 中是不可变的。源码下载因此,当我们使用"+"将多个字符串连接成一个长字符串时,每个子字符串都是单独操作的。
较慢的示例
具体来说,对于每个子字符串,它需要请求一个内存地址,然后将它与该内存地址中的原始字符串连接起来,这成为一种开销。
更快的例子
但是,当我们使用 join() 函数时,该函数事先知道所有子字符串,并且内存地址分配的长度适合最终连接的字符串。因此,没有为每个子串分配内存的开销。
强烈建议尽可能使用 join() 函数。但是,有时我们可能只想连接两个字符串。或者,只是为了方便起见,我们想使用“+”。在这些情况下,使用“+”号会带来更好的可读性和更少的亿华云计算代码长度。
4.不要使用临时变量进行价值交换
许多算法需要两个变量的值交换。在大多数其他编程语言中,这通常是通过引入一个临时变量来完成的,如下所示。
较慢的示例
但是,在 Python 中,我们不必使用 temp 变量。Python 具有内置语法来实现此值交换,如下所示。

5.使用 If-Condition 短路
"短路"评估存在于许多编程语言中,Python 也是如此。基本上,它指的是某些布尔运算符的行为,其中仅当第一个参数不足以确定整个表达式的值时才执行或评估第二个参数。
让我们在一个例子中演示这一点。假设我们有一个列表如下。
my_dict = [
{
name: Alice,
age: 28
},
{
name: Bob,
age: 23
},
{
name: Chris,
age: 33
},
{
name: Chelsea,
age: 2
},
{
name: Carol,
age: 24
}
]
我们的工作是对列表进行过滤,找出所有名字以"C"开头,年龄大于等于30岁的人。
较慢的示例有两个条件都需要同时满足:
名称以"C"开头年龄≥30 因此,我们可以编写如下代码。
前面例子中的代码没有任何问题。但是,在这个特殊的虚构示例中,只有"Chris"的年龄在 30 岁以上。
如果我们先写出检查名字的条件,那么满足三个名字(Chris、Chelsea 和 Carol)。然后,将针对所有这 3 个人再次检查有关年龄的第二个条件。
但是,因为短路评估,如果我们先写年龄条件,只有 Chris 的年龄在30岁以上,并且会再次检查他的名字是否以"C"开头。

在这种情况下,它几乎快了100%。
6.如果可以使用For循环就不要使用While循环
Python 使用了很多 C 来提高性能,即 CPython。在循环语句方面,Python 中的 For-Loop 具有相对较少的步骤,其中更多的步骤作为 C 代码运行,而不是 While-Loop。
因此,当我们可以在 Python 中使用 For-Loop 时,我们不应该使用 while 循环。这不仅是因为 For-Loop 在 Python 中更优雅,而且性能更好。
较慢的示例

相关文章
设计你的个性电脑——煲音箱电脑贴纸教程(从零开始,打造独一无二的音箱电脑)
摘要:电脑已经成为我们生活中不可或缺的一部分,而自定义电脑外观是展示个人风格的重要方式之一。本文将带你一步步学习如何设计和制作煲音箱电脑贴纸,让你的电脑焕发出独特的魅力。1.挑选...2025-11-04
图片来自 Pexels研究了一下原理,发现目前流传的版本都是魔改编译后的版本,代码经过压缩不具备可读性,因此决定自己照着实现一个。本项目主要用作 cocos creator 练手使用,所有美术素材和音2025-11-04
BigDecimal,相信对于很多人来说都不陌生,很多人都知道他的用法,这是一种java.math包中提供的一种可以用来进行精确运算的类型。很多人都知道,在进行金额表示、金额计算等场景,不能使用dou2025-11-04
想要快速学习爬虫,最值得学习的语言一定是Python,Python应用场景比较多,比如:Web快速开发、爬虫、自动化运维等等,可以做简单网站、自动发帖脚本、收发邮件脚本、简单验证码识别脚本。爬虫在开发2025-11-04清华同方N768教程(一键开启科技新时代,解锁清华同方N768的神秘功能)
摘要:随着科技的迅猛发展,智能手机已经成为人们生活中不可或缺的一部分。而清华同方N768作为一款高端科技产品,其强大的性能和丰富的功能,让人们对其产生了极大的兴趣。本文将为大家带来一份详...2025-11-04
苹果 VR 头显有望于 2022 年第一季度推出:配备激光雷达,售价 500 美元以上
IT之家 2 月 4 日消息据工商时报报道,摩根大通证券科技产业分析师杨维伦指出,苹果传闻中的虚拟现实VR)头显可能最快在 2022 年第一季度发布。报道称,“苹果头显的工业设计将与其他品牌的 VR2025-11-04

最新评论