嗯。。。楼上说保存到pyo文件的打死

现在先吃饭,等会更新“为什么python那么慢”

更新:

为什么Python这么慢?题主提出了很多问题,但都没问到点子上,或者说,没法解决根本性问题。

为什么说Python很慢,目前是由以下几点原因造成的

1.Python是是动态语言,类型需要运行时才能知晓,无法根据固定的类型做优化,而且运行时要做大量类型判断,这个是严重影响效率的原因

[int.c 伪代码]
// 注意!这只是根据本人印像写出来的,并不是真正的cpython代码,想看的在https://github.com/python/cpython/tree/master/Objects能找到PyObject *py_int_add(PyObject *op1, PyObject *op2) {
...
if (op1->tp != PyIntType) {
// 抛出解释器错误:TypeError }
if (op2->tp != PyIntType) {
// 抛出解释器错误:TypeError }
...
}

而几乎每个Python Runtime函数中都有这么一串类型判断,可想而知有多耗时

2.Python的编译器很辣鸡,或者说,由于Python是动态语言,所以很多元信息(mata info)都只有运行时才能知晓,所以优化很有限

关于题主提出的4个问题:没有

谁特么给你说.py文件没有提前编译的?你当没看到那个_pycache_文件夹?import的模块通常在第一次加载时就会被编译到pyc文件

用汇编重写关cpython性能何事?你思维怕不是还停留在20年前哦,现有的c/c++编译器的性能已经非常高了,如果用汇编写,怕不是到现在为止第一行python代码还没出来哦

Python3相对于Python2的优化我不清楚,效率个人感觉差不多,但Python3修复了Python2中一些比较大的坑,这才是造成社区分裂的原因(比如str从byte变为Unicode)

题主应该是刚入门Python,之前有过C、C++的经验吧?

能想到这些已经可以了,不过没想到根本原因

如果有兴趣(或者有兴趣去做Python加速)可以去看看《Python源码剖析》一书,虽然讲的是Py2,但这书很不错