本文要说明的问题

  • pyc 文件是什么
  • pyc 文件的作用
  • py 与 pyc 文件冲突

pyc 文件是什么

当 py 文件加载后,py 文件被二进制编码成 pyc 文件。py 文件的修改时间被记录到 pyc 文件中。

这里的加载意味着要被其他模块导入,如果你只是运行 python filename.py,那么不会生成 pyc 文件。

pyc 文件的作用

pyc 文件是为了让加载 Python 模块更快,因为 pyc 相比 py 文件编译过程可以被跳过。

pyc 文件不能令执行更快。

py 与 pyc 文件冲突

py 文件的修改时间被记录到了 pyc 文件中,如果两者不匹配,Python 会忽略 pyc 文件,加载 py 文件然后编译出新的 pyc 文件。

这里的不匹配指的是 py 与 pyc 文件的修改时间不一致。

即使 pyc 文件记录的修改时间晚于 py 文件(pyc 文件更加新鲜),还是会进行上述流程。

以下是一个验证示例

$ date
Tue Feb 6 10:31:28 CST 2018 echo "print('Hello')" > hello.py $ python
>>> import hello
Hello
>>> quit() $ ls -l | grep hello
-rw-r--r-- 1 jsm staff 15 Feb 6 10:31 hello.py
-rw-r--r-- 1 jsm staff 110 Feb 6 10:32 hello.pyc # 修改 hello.py 的修改时间
$ touch -mt 200801120000 hello.py $ python
>>> import hello
Hello
>>> quit() $ ls -l | grep hello
-rw-r--r-- 1 jsm staff 15 Jan 12 2008 hello.py
# 可以看出 hello.pyc 相比上面更新了
-rw-r--r-- 1 jsm staff 110 Feb 6 10:35 hello.pyc

py 与 pyc 文件的更多相关文章

  1. Python编程时.py与.pyc文件的介绍

    Python的程序中,是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候.将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快 ...

  2. .py与.pyc文件区别

    原来Python的程序中,是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候.将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了 ...

  3. python py生成为pyc文件

    生成单个pyc文件 python就是个好东西,它提供了内置的类库来实现把py文件编译为pyc文件,这个模块就是 py_compile 模块. 使用方法非常简单,如下所示,直接在idle中,就可以把一个 ...

  4. python之模块py_compile用法(将py文件转换为pyc文件)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...

  5. Python是解释性语言吗? 直到看到有 python py、pyc、pyo、pyd 文件

    py是源文件,pyc是源文件编译后的文件,pyo是源文件优化编译后的文件,pyd是其他语言写的python库 1. Python是一门解释型语言? Python是一门解释性语言,我就这样一直相信下去, ...

  6. 代码编译与反编译 (.py文件与.pyc文件互转)

    # 将.py文件转化为.pyc文件,实现代码隐藏的需要,转化后的.pyc文件将在当前目录的__pycache__文件夹下. # .pyc文件的使用与.py文件的使用相同. .py -> .pyc ...

  7. [Python] [转] python.exe和pythonw.exe的区别(区分.py、.pyw、.pyc文件)

    Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序.如下图所示: 它们到底有什么区别和联系呢? 概括说明一 ...

  8. pyc 文件反编译 py uncompyle2

    一.工具 https://github.com/Mysterie/uncompyle2 -----------------------2016-6-3 11:24:19-- source:[1]用un ...

  9. python面试题之请谈谈.pyc文件和.py文件的不同之处

    虽然这两种文件均保存字节代码,但.pyc文件是Python文件的编译版本,它有平台无关的字节代码,因此我们可以在任何支持.pyc格式文件的平台上执行它.Python会自动生成它以优化性能(加载时间,而 ...

随机推荐

  1. linux 修改时间

    实例:设置时间伟2008年8月8号12:00# date -s "2008-08-08 12:00:00"修改完后,记得执行clock -w,把系统时间写入CMOS date -s ...

  2. ODOO翻译导出窗口修正

    当你辛苦修正odoo的翻译,想把它导出到其它系统的时候, 你会发现导出向导窗口无法显示下拉列表. 下面的方法修正此问题: 1.打开"开发者模式". 2.去到翻译导出向导:设置 - ...

  3. InputStream写文件出现大量NUL

    写文件大家出现最多的是汉字知码之类的问题,今天不是乱码问题,是出现在大量空字符,用记事本打开是不可见的.如果用NodePad++打开则会显示NUL 问题分题: 刚开始以为是编码问题,试了几个编码发现问 ...

  4. 网站相关技术探究keepalive_timeout(转)

    网站相关技术探究keepalive设多少: /proc/$PID/fd/$number  0:标准输入 1:标准输出 2:标准错误   Test: [root@KTQT ~]# ll /proc/12 ...

  5. HDU 3085 双广

    n*m地图上有 '. ':路 'X':墙 'Z':鬼,每秒蔓延2个单位长度,能够穿墙.共两个,每秒開始时鬼先动 'M':一号,每分钟可移动3个单位长度 'G':二号,每分钟课移动1个单位长度 问两人能 ...

  6. jQuery select的操作实现代码

          //改变时的事件  $("#testSelect").change(function(){ //事件发生生 jQuery('option:selected', this ...

  7. C#实现svn server端的hook

    目标 要做的东东呢,就是在向svn提交文件的时候,可以再server端读到所有提交文件的内容,并根据某些规则验证文件的合法性,如果验证失败,则终止提交,并在svn的客户端上显示错误信息. 准备工作   ...

  8. Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi..

    Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi.. Atitit.java class flect solu jar hell use  ...

  9. 680. Valid Palindrome II【easy】

    680. Valid Palindrome II[easy] Given a non-empty string s, you may delete at most one character. Jud ...

  10. 一键保存网页为PDF_V1.2

    福利来了,“一键保存网页为PDF”发布以来最给力的功能来了: 1.支持大部分浏览器了(添加书签方式),测试IE8\IE9.谷歌.火狐可用: 2.转换组件“ephtmltopdf”无水印了,不用注册账号 ...