python基础7 .pyc

本节内容

  1. 概念澄清:解释型语言和编译型语言
  2. python的运行过程
  3. 参考网页


在上一章引用模块的时候,会生成一个login.pyc的文件。这个.pyc的文件是做什么的了? python 是一门解释型语言,c是compiled的缩写.为什么会有.pyc的文件了?

概念澄清:解释型语言和编译型语言

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。

编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

python的运行过程

其实Python和Java/C#一样,也是一门基于虚拟机的语言。

当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。所以我们应该这样来描述Python,Python是一门先编译后解释的语言。

  1. 完成模块的加载和链接;
  2. 将源代码翻译为PyCodeObject对象(这货就是字节码),并将其写入内存当中(方便CPU读取,起到加速程序运行的作用);
  3. 从上述内存空间中读取指令并执行;
  4. 程序结束后,根据命令行调用情况(即运行程序的方式)决定是否将PyCodeObject写回硬盘当中(也就是直接复制到.pyc或.pyo文件中);
  5. 之后若再次执行该脚本,则先检查本地是否有上述字节码文件。有则执行,否则重复上述步骤。

所以我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

参考网页

https://www.zhihu.com/question/30296617

http://www.cnblogs.com/alex3714/articles/5465198.html

时间: 2024-10-10 05:52:48

python基础7 .pyc的相关文章

python基础周作业

python基础周作业 1.执行python脚本的两种方法 脚本前面直接指定解释器 在脚本开始前声明解释器 2.简述位,字节的关系 每一个字节占用八个比特位 3, 简述ascii.unicode.utf- ‐8.gbk的关系 utf--‐8 <-- unicode <-- gbk <-- ascii 按此方向兼容 4..请写出"李杰"分别用utf- ‐8和gbk编码所占的位数 "李杰" 占用utf -8 占6字节 , gbk 占用4字节 5.pyt

Python基础教程【读书笔记】 - 2016/7/31

希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章  充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括一组模块,称为标准库standard library.展示这些模块的工作方式,讨论如何分析它们,学习它们所提供的功能. [10.1] 模块 已经知道如何创建和执行自己的程序,也学会了怎么用import从外部模块获取函数并且为自己的程序使用.接下来看看怎么编写自己的模块. [10.1.1] 模块是程序

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

Python服务器开发一:python基础

Python服务器开发一:python基础 Python(蟒蛇)是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. [特点] 1 Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型. 2 Python具有很强的面向对象特性,而且简化了面向对象的实现.它消除了保护类型.抽象类.接口等面向对象的元素. 3 Python代码块使用空格或制表符缩进的方式分隔代码. 4 Python仅

Python基础之一:文件类型及运算符

一.PYTHON文件类型 1.源代码 Python源代码的文件以"py"为扩展名,由Python解释,不需要编译: 2.字节代码 Python源文件经编译后生成的扩展名为"pyc"的文件: 编译方法:     importpy_compile     py_compile.compile("hello world.py") 3.优化代码 经过优化的源文件,扩展名为".pyo"  python –O –m py_compile 

python基础3

一.pyc文件 1.前提 编写auth.py模块,新建test.py文件引用auth.py文件--运行test.py文件之后会生成auth.pyc文件 不同版本的区别 python2:生成的__pycache__ 文件夹.ahtu.pyc文件 python3:生成的pyc文件,名称修改为:auth.cpython-35.pyc,并且是直接在__pycache__ 文件夹里面的           2.python是一门解释型语言? 我初学python时,听到的关于python的第一句话就是,py

Python基础语法(转)

作者:Peter 出处:http://www.cnblogs.com/Peter-Zhang/ Python 基础语法(一) Python的特点 1. 简单 Python是一种代表简单思想的语言. 2. 易学 Python有极其简单的语法. 3. 免费.开源 Python是FLOSS(自由/开放源码软件)之一. 4. 高层语言 使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节. 5. 可移植性 Python已被移植到很多平台,这些平台包括Linux.Windows.Free

Python基础(十)re模块

Python基础阶段快到一段落,下面会陆续来介绍python面向对象的编程,今天主要是补充几个知识点,下面开始今天的内容. 一.反射 反射的作用就是列出对象的所有属性和方法,反射就是告诉我们,这个对象到底是什么,提供了什么功能, 可以伪造Web框架的路由系统. 举个例子: 1 2 >>> dir(json) ['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__',

Python基础(12)--模块

本文地址:http://www.cnblogs.com/archimedes/p/python-modules.html,转载请注明源地址. 模块简介 如果你退出 Python 解释器重新进入,以前创建的一切定义(变量和函数)就全部丢失了.因此,如果你想写一些长久保存的程序,最好使用一个文本编辑器来编写程序,把保存好的文件输入解释器.我们称之为创建一个脚本.程序变得更长一些了,你可能为了方便维护而把它分离成几个文件.你也可能想要在几个程序中都使用一个常用的函数,但是不想把它的定义复制到每一个程序