一、文件分类:
1)*.py文件,这就是我们常见的py源文件,没什么好说的;
2)*.pyc, py源文件编译成的二进制字节码文件,依然由python加载执行,不过速度会提高,也会隐藏源码;
3)*.pyo,优化编译后的程序,也是二进制文件,适用于嵌入式系统。
二、生成pyc和pyo文件
1)如何生成pyc文件呢?
假设我们有一个1.py文件需要编译成pyc文件,则在python shell输入
import py_compile
py_compile.compile('1.py')
这样就可以生成pyc文件了
2)如何生成pyo文件呢?
python -O -m py_compile 1.py
另外,pyc和pyo跟py文件是一样的,依然可以用python 1.pyc等形式执行
python源代码的文件以py为扩展名,由python程序解释,不需要编译,以下为hello.py的代码
[root@AY130704092906278009Z python]# cat hello.py
#!/usr/bin/python
print("hello world")
字节代码
python源文件经编译后生成的扩展名为pyc的文件
写一个python程序去编译上面的hello.py代码:(2.py程序代码如下)
[root@AY130704092906278009Z python]# cat 2.py
import py_compile
py_compile.compile('hello.py')
运行python 2.py可以看到生成了一个__pycache__文件夹,下面有一个pyc文件,那个文件也可以直接执行
[root@AY130704092906278009Z python]# python 2.py
[root@AY130704092906278009Z python]# ls
2.py hello.py reference.py str_methods.py using_list.py
code __pycache__ seq.py using_dict.py using_tuple.py
代码优化
经过优化的源文件,扩民名为.pyo
运行:
python -O -m py_compile hello.py,同样他也生成在__pycache__文件夹下。
[root@AY130704092906278009Z python]# cd __pycache__/
[root@AY130704092906278009Z __pycache__]# ls
hello.cpython-33.pyc hello.cpython-33.pyo
[root@AY130704092906278009Z __pycache__]# python hello.cpython-33.pyc
hello world
[root@AY130704092906278009Z __pycache__]# python hello.cpython-33.pyo
hello world
上面三种就是python的三种文件格式。【以上均基于python3.3上运行的结果,python其他版本可能有所不同】