刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

在本文中,我总结了 6 种 Python 编写方式案例。

1.不要导入根模块

在使用 Python 时,我们无法避免的一件事是导入模块,无论是内置模块还是第三方模块。有时,我们可能只需要该模块中的一个或几个函数或对象。在这种情况下,我们应该尝试只导入我们需要的函数或对象,而不是导入根模块。

这是一个简单的例子。假设我们需要计算程序中某些数字的平方根。

较慢的示例

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

在不好的例子中,我们导入了 math 模块,并使用 math.sqrt() 来访问该函数。当然,它没有任何问题,但如果我们可以导入 sqrt() 函数,性能会更好。

更快的例子

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

2.避免使用点/点链

使用 dot 非常直观。在 Python 中访问对象的属性或函数。大多数时候,没有问题。但是,如果我们可以避免使用点甚至链接点,性能实际上会更好。

下面的示例显示将数字附加到列表中,然后将其删除。

较慢的示例

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

更快的例子

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

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

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

我可以预料到许多 Python 开发人员会跳出来说这个例子中的技术有点荒谬。事实上,即使是我自己,我也很少像上面那样写代码。然而,很高兴知道我们可以这样编程,甚至可以让它更快。

如果我们想附加到一个列表并从中删除数百万次的项目,我们可能应该考虑使用这个技巧。这就是为什么我们需要平衡代码的性能和可读性。

3.不要使用 + 连接字符串

字符串在 Python 中是不可变的。因此,当我们使用”+”将多个字符串连接成一个长字符串时,每个子字符串都是单独操作的。

较慢的示例

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

具体来说,对于每个子字符串,它需要请求一个内存地址,然后将它与该内存地址中的原始字符串连接起来,这成为一种开销。

更快的例子

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

但是,当我们使用 join() 函数时,该函数事先知道所有子字符串,并且内存地址分配的长度适合最终连接的字符串。因此,没有为每个子串分配内存的开销。

强烈建议尽可能使用 join() 函数。但是,有时我们可能只想连接两个字符串。或者,只是为了方便起见,我们想使用“+”。在这些情况下,使用“+”号会带来更好的可读性和更少的代码长度。

4.不要使用临时变量进行价值交换

许多算法需要两个变量的值交换。在大多数其他编程语言中,这通常是通过引入一个临时变量来完成的,如下所示。

较慢的示例

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

更快的例子

但是,在 Python 中,我们不必使用 temp 变量。Python 具有内置语法来实现此值交换,如下所示。

刷新认知!这六种让 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 因此,我们可以编写如下代码。

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

更快的例子

前面例子中的代码没有任何问题。但是,在这个特殊的虚构示例中,只有”Chris”的年龄在 30 岁以上。

如果我们先写出检查名字的条件,那么满足三个名字(Chris、Chelsea 和 Carol)。然后,将针对所有这 3 个人再次检查有关年龄的第二个条件。

但是,因为短路评估,如果我们先写年龄条件,只有 Chris 的年龄在30岁以上,并且会再次检查他的名字是否以”C”开头。

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

在这种情况下,它几乎快了100%。

6.如果可以使用For循环就不要使用While循环

Python 使用了很多 C 来提高性能,即 CPython。在循环语句方面,Python 中的 For-Loop 具有相对较少的步骤,其中更多的步骤作为 C 代码运行,而不是 While-Loop。

因此,当我们可以在 Python 中使用 For-Loop 时,我们不应该使用 while 循环。这不仅是因为 For-Loop 在 Python 中更优雅,而且性能更好。

较慢的示例

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

更快的例子

刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!

以上就是刷新认知!这六种让 Python 程序变慢的坏习惯我一直在用!的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2240324.html

(0)
上一篇 2025年2月26日 20:16:54
下一篇 2025年2月26日 20:17:16

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 分享 18 个 Python 高效编程技巧

    本文由Python编程时光整理 Python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了。高级语言,如果做不到这样,还扯啥高级呢? 01 交换变量 >>>a=3>&g…

    2025年2月26日
    100
  • 提升Python程序性能的七个习惯

    1、使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存。 使用局部变量替换模块名字空间中的变量,例如 ls = os.linesep。一方面可以提高程序性能,局部变量查找速度更快;另一方面可用简短标识符替代冗长的模块变…

    2025年2月26日
    200
  • 2022年现代Python编程的四个关键点

    作为一个诞生已有 30 余年的编程语言,Python 的流行度在近几年迎来了爆炸性的增长。为了方便大家能够更好的采用 Python,利用该语言中所有新的和强大的功能;InfoWorld 归纳总结了开发人员在 2022 年编写现代 Pytho…

    2025年2月26日
    200
  • Python列表解析式到底该怎么用?

    Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法。在本文中,将会展示列表解析式(List Comprehension)。我们将讨论如何使用它?什么时候该或不该使用它? 列表解析式的优势 比循环更节省时间…

    2025年2月26日
    200
  • 用 Python 内置库创建一个命令行应用程序

    当创建一个应用程序时,通常希望能够告诉你的应用程序如何做某事。有两种流行的方法来完成这项任务,你可以让应用程序接受命令行参数,或者创建一个图形化的用户接口。有些应用程序两者都支持。 当你需要在服务器上运行你的代码时,命令行接口很有帮助。大多…

    2025年2月26日
    200
  • Python 中的鸭子类型和猴子补丁

    大家好,我是老王。 Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这两个词而已。 我最近在面试候选人的时候,也会问这两个概念,很多人答的也并不是很好。但是当我…

    编程技术 2025年2月26日
    200
  • Python F-Strings 比你想象的更强大

    格式化字符串文字——也称为f 字符串——自 Python 3.6 以来就已经存在,所以我们都知道它们是什么以及如何使用它们。然而,你可能不知道 f-strings的一些比较实用跟方便的功能。因此让这篇文章带你了解一下f-strings的一些…

    2025年2月26日
    200
  • 最新开源:高效的 Python 通用对象池化库

    在程序设计中,创建物体模块主要是通过生成对象来实现。当对象使用结束后,则会成为不再需要的模块进行销毁。 而在系统进行对象的生成与销毁过程中会大量的增加内存的消耗,同时对象的销毁往往会留下残留的信息,这样将会伴随内存泄露的问题存在。 在实际的…

    2025年2月26日
    200
  • 17条好用的 Python 技巧分享!

    正文 大家好,我是Python人工智能技术。 在这篇文章中,我们将讨论最常用的python技巧。大多数这些技巧都是我在日常工作中使用过的简单的Trick,我觉得好东西就是要拿出来和大家一起分享。 闲话少说,我们直接开始吧!:) 技巧总结 1…

    2025年2月26日
    200
  • 九个超级实用的数据科学Python库

    在本文中,我们会研究一些用于数据科学任务的 Python 库,而不是常见的比如 panda、scikit-learn 和 matplotlib 等的库。尽管像 panda 和 scikit-learn 这样的库,是在机器学习任务中经常出现的…

    2025年2月26日
    200

发表回复

登录后才能评论