前言
我们都知道就速度而言,Python是比Java或C慢得多的语言。Python是动态类型化的语言,这意味着它的变量类型未预定义。动态类型是一把双刃剑,它成就了Python成为一种优雅的语言,同时也让Python运行速度减慢。让我们看看一些可能对您的整体代码性能产生重大影响的小技巧。
1. 了解你的内置函数
这一技巧有助于节省您的时间和时间与您的代码。当我开始学习Python的时候,我以前从不使用内置函数,所以为了完成我的绝对值代码,我会运行一个for循环而不是使用abs()。为了把一个字符转换成大写字母,我甚至会把它转换成与大写字母等价的ASCII字符,因为我拒绝学习字符串函数。
如果你对Python是认真的,那么学习所有的Python内置函数是值得的,因为它不仅使你的代码更整洁、更可重用,你还可以通过简单地使用Python提供给你的东西来避免代码中人为的低效率。
2. A,B=B,A
我确信您以前使用过“temp”作为占位符变量来交换两个元素。我能告诉你的是,这个方法只在课堂上使用,不应该在编程时使用。
相反,可以通过将变量写成a,b = b,a 来进行简单的变量交换。这将在一行中切换所有变量,并防止解释器超过三个(temp, a,b交换方法)。
这是一个小小的修复,可以节省几分之一秒的时间——但从长远来看,这些时间会累积起来。
3. 只在函数内导入
作为一个初学者,我们都喜欢大量导入我们认为在代码顶部需要的所有东西。我记得有一次我导入了NumPy, Pandas, Scipy, Warnings, Math, Math, Os等等,当我完成我的代码时,我只使用了三个库。这会耗尽你电脑的内存。
相反,在相应的函数中导入所需的库(如果多个函数需要相同的库,则需要多次导入)。这意味着解释器只会在你调用函数时完成导入,而不是在代码的开头。现在Python库被缓存了,所以当你调用不同的函数时,它不会在每次导入时占用额外的时间。然而,当您最终导入顶部的所有内容,甚至不使用代码中的一些函数时,它确实会占用更多的时间。
4. 使用Numba
这是一个小众技巧,主要帮助使用NumPy或科学编程的人。Numba是一个Python JIT编译器,它对函数应用装饰器,将一些函数转换为超快的字节代码(几乎与C一样快)。Numba开始因其简单和庞大的功能而出名。
Numba目前也支持其他功能,但是,我认为它目前主要是为科学Python开发人员提供的。
5. 从集合中检查,而不是从列表中
这是Python优化书中最古老的技巧之一。如果存在元素,不要在列表中搜索。相反,将列表设置为set(set(list)),然后执行检查“element in set(list)”。这个小小的改变将提高您的运行时效率,因为Python使用了可调整大小的哈希表,将平均时间复杂度提高到了O(1)。
然而,遍历集合并不比遍历列表快。