翻译 | 更快的Python(二)
更快的 Python(Python Faster Way)使用代码示例来说明如何书写 Python 代码能带来更高的性能。本文对代码进行了讲解,从性能和可读性等角度来选择出最适合的写法。 例子 11:字符串连接 最差/最优时间比:1.15 使用建议:一次性连接多个(3 个以上)的字符串的时候,使用 join,其他情况使用加号或 f-string。 说明:又是一个字符串连接的问题,不过这个例子举的不好,join 适用的场景是一次连接多个字符串,会比加号连接多个字符串要快很多(加号相当于一个一个连接)。 例子 12:数字的格式化 最差/最优时间比:1.29 使用建议:需要复杂格式,推荐使用 format 方法;将数字转换为字符串,直接使用 str 方法。 说明:将数字转为字符串,使用 str 方法要快于 format 方法,因为 format 方法支持在转换过程中增加规则,例如将数字转为货币形式(每三位加一个逗号分隔符)。 例子 13:获取内置列表类型的长度 最差/最优时间比:1.20 使用建议:使用 len()方法。 说明:当调用 len()方法时,系统实际上是调用了对象内置的len方法,从这个层面理解,直接调用len应该比 len()方法更快。但是当 len()内置的列表方法时,Python 解释器做了优化,直接返回了列表对象中存储长度信息的变量,并不会调用len。 例子 14:整数类型的运算 最差/最优时间比:2.63 使用建议:不要直接调用add等魔术方法。 说明:对于整数类型,调用魔术方法完成运算的速度远远慢于直接使用运算符,使用运算符时,Python 解释器直接调用 C 实现的 operaotr 包中的运算方法,所以速度很快;而使用调用魔术方法,在 Python 层面多出了调用add等魔术方法的额外操作。 例子 15:自定义类型的运算符重载 最差/最优时间比:1.06 使用建议:不要直接调用add等魔术方法。 说明:对于重载了运算符的对象,没有对应的 C 实现运算方法,所以直接直接调用魔术方法速度会更快。 例子 16:对 range 结果求和 ...