• Python的字节编译


    1.什么是Python的.pyc文件

             在python中 .pyc文件是指以.pyc为后缀名的这一类文件,在我们的python的安装目录里,找到模块所在的目录Lib会看到很多以.py结尾的模块文件,与之对应的就会找到.pyc结尾的文件,那么这些文件是怎么产生的呢?

             众所周知,由于我们的计算机只认识二进制的机器语言,所以在执行Python模块的时候需要把模块编译成计算机能够识别的二进制语言才可以执行。

    对于python文件这种编译方式主要以下两种:

               <1>.先将模块里面的内容编译成二进制语言,然后执行这些二进制语言 。

               <2>.第二种方式是直接执行对应模块的二进制余元程序。

          在上面两种方式中第<2>种方式省略了编译这一步,所以执行速度相对来说要快一些。把模块编译成二进制语言的过程就叫做字节编译,这个过程会产生一个与编译模块对应的.pyc文件, 所以.pyc文件是经过编译后的模块对应的二进制文件。

    2.字节编译与编译的区别

              上面我们已经知道,把模块编译成二进制语言程序的这个过程叫做字节编译。我们知道Python是一种解释型语言,而不是一种编译型语言,那么为什么又说Python中有字节编译呢?很多人会认为Python中出现字节编译,那么Python就应该是一种编译型语言。

              其实这种观点是不正确的,Python中虽然出现了编译这个过程,但是Python中编译的过程是在Python的解释器中发生的,换句话说,其实每种程序想要让计算机执行,都只能变成二进制的形式,编译型语言是指在软件中就有一个独立的编译模块去将程序编译,而Python中字节编译这部分功能是指由解释器完成的,所以Python仍然是解释型语言。

    3.".pyc"文件的产生

            通过上面的了解,python字节编译这个过程会产生一个与编译的模块对应的.pyc文件。也就是说.pyc文件就是经过编译后的模块对应的二进制文件。

      下面可通过二种方法产生.pyc文件:

            <1>.运行一下模块,就会生成该模块的.pyc文件

                   如登录到python的客户端或python的IDLE(Python GUI),执行 import zipfile,

                   就会在模块所在的目录(Lib)生成zipfile.pyc。

          <2>.通过cmd窗口执行相应命令编译模块生成.pyc文件

                 python -m compileall xmllib.py

    C:Python27Lib>python -m compileall xmllib.py
    Compiling xmllib.py ...

          执行完上面的命令,就会在模块所在的目录(Lib)生成xmllib.pyc

    4.".pyc"文件的使用

              在Python中,.pyc文件最大的一个作用就是加快了模块的运行速度和利用.pyc文件可以做反编译等高级功能,生成.py文件。在我们执行一个模块的时候,如果没有存在.pyc文件,则系统会首先编译生成一个.pyc文件,如果有则直接使用。 可以通过一个二进制文件查看器(如 Binary Viewer)查看.pyc文件的内容。

                                                                                                                                总结来源于极客学院

  • 相关阅读:
    7.22Java之Lambda表达式练习
    7.22Java线程池的使用
    7.20Java之封装multipart/formdata格式的表单并请求API
    7.22Java线程池概念和原理
    7.16Java接口之关于ContentType中application/xwwwformurlencoded和multipart/formdata的区别
    7.22Java之函数式编程思想
    7.23Java之Lambda表达式之省略形式
    7.17Java之HttpClient类发送application/xwwwformurlencoded类型的请求
    7.19Java之HttpClient类发送GET请求方法
    7.16Java之使用HttpClient类
  • 原文地址:https://www.cnblogs.com/myrunning/p/5598315.html
Copyright © 2020-2023  润新知