Python文件编译和区分,如何发生这种情况

时间:2015-10-22 04:13:35

标签: python compilation

虽然经历了许多概念,但这是我的最后一点(可能很愚蠢)。请告诉我如何实现以下方案

在文件夹中说我有“z.pyc”文件(没有z.py)。

现在我在同一个位置创建了z.py.

根据我的理解,首次执行z.py会更新z.pyc,所以从第二次试用z.py和z.pyc时应该给出相同的结果。

但它没有发生。 z.py和z.pyc每次给出区分结果。 请建议如何实现这种情况。

1 个答案:

答案 0 :(得分:2)

" 首次执行z.py将更新z.pyc "

不,"执行z.py"绝不会创建,更新或引用z.py。只有import z语句才能创建或使用z.pyc

1).pyc文件是在执行文件的 import 时创建的,永远不会在执行文件时执行。

2)如果需要,import z将刷新编译版本。

3)运行python z.pyc将始终运行文件的编译版本,而python z.py将永远不会运行文件的编译版本。

因此,可能导致上述混淆结果的一系列事件是:

$ echo "print 'first file'" > z.py
$ echo "import z" > main.py
$ python main.py
first file
$ echo "print 'second file'" > z.py
$ python z.py
second file
$ python z.pyc
first file

要学习的课程?永远不要运行python z.pyc,始终运行python z.py