Python 性能优化实战:让代码快起来的五个实用技巧

举报
yd_70403235 发表于 2026/11/01 16:05:11 2026/11/01
【摘要】 本文结合日常开发场景,分享五个立竿见影的 Python 性能优化技巧:列表推导式、生成器、内置函数与标准库、lru_cache 缓存,以及合理选择数据结构,并给出可直接运行的示例代码。

Python 以简洁易读著称,但也常被贴上“慢”的标签。其实很多性能问题并非语言本身的瓶颈,而是写法不当造成的。本文结合日常开发中的真实场景,分享五个立竿见影的优化技巧。

一、优先使用列表推导式
循环加 append 是最常见的写法,但列表推导式由 C 层循环实现,通常比等价循环快 30% 以上:
squares = [x * x for x in range(10000)]
如果还需要过滤条件,直接写在推导式里即可,避免多一层循环。

二、用生成器处理大数据
列表会一次性把全部数据装进内存,而生成器一次只产生一个值,内存占用几乎恒定:
def read_lines(path):
    with open(path) as f:
        for line in f:
            yield line.strip()
求和时也可以直接用生成器表达式:sum(x * x for x in range(10 ** 7)),既省内存又简洁。

三、善用内置函数与标准库
内置函数大多由 C 实现,比手写 Python 循环快得多。sum()、map()、max()、any()、all(),以及 collections.Counter、itertools,都是值得优先使用的工具:
from collections import Counter
Counter(words).most_common(5)

四、用 functools.lru_cache 缓存重复计算
对于存在大量重复调用的纯函数,加一层缓存往往能带来数量级的提升:
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
    return n if n < 2 else fib(n - 1) + fib(n - 2)
需要注意,缓存只适用于参数可哈希、无副作用的纯函数。

五、选对数据结构
成员判断用 set 而不是 list:set 的 in 操作是 O(1),list 是 O(n);需要键值映射用 dict;既要去重又要保序,可以用 dict.fromkeys()。数据结构选对了,很多“优化”根本不需要做。

结语
性能优化的第一步永远是先测量再优化:用 timeit 对比小段代码,用 cProfile 定位真正的热点,再针对性地改写。记住:先写对,再写快;过早优化是万恶之源。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。