大家在工程合理性角度都说了很全了,
我说 2 个其他方面吧:
1)历史问题:Python 最初是和 perl,ruby 等一系列服务器端脚本开始发展的,随后很快被科研人员采用,这两大用户群体的使用习惯和思维习惯没有那么工程化,而是反反复复的测试,而且代码不能太庞大,这就使得和项目型或者编译型语言常遇到的基础类型但是高频发生的事故少的很多;
如果,最初 Python 那个年代让运维(unix/free bsd/solaris 服务器年代)去像 C++那样写脚本,那 Python 走不到今天,早死了。
2)最近几年用机械学习和 AI 方面的应用又让 Python 火了起来:除了早期的上面提到的历史发展缘故之外,数学应用基本数据类型就是矩阵,矩阵里也基本都是 numpy 的 float32/64 等数据类型,这远没有面向对象的 Object 类型那么复杂多变。所以,这一大建模、科研人群,他们对类型标注的需求几乎没有。
综上吧,如果用 Python 搞后端服务,那没话说,他没有类型,是个痛点,但是这没必要,后台大型服务有那么多更适合的语言呢。
所以,Python 确实欠缺类型标注,但是可以搞,而在目前,又不是必须一定要搞。