前几天在技术群里说了句"Python 其实被高估了",瞬间炸了锅。
有人问我是不是疯了,有人让我"滚出群",还有人认真跟我辩论了半小时。
我仔细想了一下,决定把这件事说清楚。
先说结论
Python 是一把好用的锤子,但不是万能工具。
问题在于,现在很多人把它当成了唯一的工具,甚至觉得"会用 Python 就等于会编程"。
这个认知,是有问题的。
Python 慢,这是事实
我们先面对一个不争的事实——Python 很慢。
不是"相对慢",是"真的慢"。
同样的算法,C++ 跑 0.1 秒,Java 跑 0.3 秒,Python 跑 2 秒。这不是"优化空间",这是语言层面的硬伤。
我做过一个实验:用 Python 和 C++ 分别实现同一个矩阵乘法运算。
# Python 版本
import numpy as np
import time
a = np.random.rand(1000, 1000)
b = np.random.rand(1000, 1000)
start = time.time()
for _ in range(10):
np.dot(a, b)
python_time = time.time() - start
print(f"Python+NumPy: {python_time:.2f} 秒")
// C++ 版本(用 Eigen 库)
#include <Eigen/Dense>
#include <chrono>
#include <iostream>
int main() {
Eigen::MatrixXd a = Eigen::MatrixXd::Random(1000, 1000);
Eigen::MatrixXd b = Eigen::MatrixXd::Random(1000, 1000);
Eigen::MatrixXd c;
auto start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < 10; i++) {
c = a * b;
}
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> diff = end - start;
std::cout << "C++ + Eigen: " << diff.count() << " 秒" << std::endl;
}
结果:C++ 比 Python + NumPy 快了将近 3 倍。
注意,这还是 Python + NumPy 的对比——NumPy 本身就是 C 写的。如果纯 Python 实现,差距是 50 倍以上。
但慢不是核心问题
很多人反驳我说:"Python 慢没关系,开发效率高啊"。
这个论点有一定道理,但只说对了一半。
开发效率高,不等于维护成本低。
我维护过一个 5 万行的 Python 项目,最大的问题不是"写得慢",而是"改得怕"。
没有编译期检查,改一个函数签名,半年后才发现某个角落里的调用挂了。单元测试覆盖不到的地方,就是定时炸弹。
动态类型的"灵活性",在大型项目里,往往会变成"不可维护性"。
真正的问题:生态幻觉
我觉得 Python 被高估的根本原因,是一个生态幻觉。
什么意思呢?
很多人觉得"Python 什么都能做"——爬虫、Web、AI、数据分析、自动化测试……
但实际上,真正在干的,是底层的 C/C++ 代码。
- NumPy?核心是 C
- pandas?核心是 Cython
- TensorFlow/PyTorch?核心是 C++ 和 CUDA
- FastAPI?核心是 Starlette(也是 Python,但性能瓶颈在 I/O)
Python 在这个生态里的角色,更多是"胶水层"——把各个高性能库拼在一起。
这本身没有错,但问题是:很多人把这个当成 Python 自己的能力了。
我说一个真实的例子
去年我们团队招人,有个候选人的简历写着"精通 Python 编程"。
面试时我问他:Python 的字典是怎么实现的?为什么平均 O(1),最坏 O(n)?
他愣了五秒,说"字典不就是 hash map 吗"。
我再问:Python 3.7 之后字典为什么是有序的?实现上做了什么改动?
他又愣了,说"不知道,平时直接用就行"。
这不代表他能力差,但这说明一件事:很多人对 Python 的理解,停留在"会用"的层面,而没有理解"为什么"。
而这,正是"被高估"的体现——我们把工具的使用,当成了能力的全部。
那 Python 到底值不值得学?
值得。
我从来没有说过"不要学 Python"。
我的观点是:不要把 Python 当成编程的全部。
如果你只会 Python,你对"编程"的理解是不完整的。你应该去学一门编译型语言(C++/Rust/Go),去理解内存管理、指针、编译优化这些真正底层的概念。
Python 让你快速上手,但不能让你真正理解计算机。
一个更诚实的认知框架
我觉得对待 Python,应该有三个层次的认知:
第一层:Python 是很好的入门语言
语法简单,生态丰富,能快速做出东西。作为第一门语言,Python 非常合适。
第二层:Python 有它的适用场景
数据处理、快速原型、AI 研究、自动化脚本——这些场景 Python 确实是最好的选择之一。
第三层:Python 不是工程的最优解
当你在做高性能、高并发、大规模系统工程的时候,Python 往往不是最好的选择。Go、Rust、C++ 可能更合适。
问题是,现在很多人停留在第一层,却以为自己到了第三层。
最后
说 Python 被高估,不是要否定它,而是希望我们能用更诚实、更完整的视角去看待它。
工具就是工具。好用就用,不好用就换。没必要护短,也没必要贬低。
你平时用 Python 做什么?有没有遇到过"Python 真的不行"的场景?评论区见,理性讨论,不喷人。
最后,别忘了关注「有为大青年」,我们下期见~