1.Python是一门解释型语音?

我初学Python时,听到的关于Python的第一句话就是,Python是一门解释型语音,我就这样一直相信下去,知道发现了*.pyc文件的存在.如果是解释型语音,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!

为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并把一些基础概念给理清.

2.解释型语音和编译型语言

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

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

解释型语音就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行做出翻译,然后直接运行,最经典的例子是Ruby,还有Python.
通过以上的例子,我们可以来总结一下解释型语音和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了"翻译",所以在运行时就少掉了"翻译的过程",所以效率比较高.但我们也不能一概而论.一些解释型语音也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在速度上和编译型语言比较接近.

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

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

3.Python到底是什么

其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧.

当我们在命令行中输入python hello.py时,其实是激活了Python的"解释器"告诉"解释器":你要开始工作了.可是在"解释"之前,其实执行的第一项工作和Java一样,是编译.

熟悉Java的同学可以想一下我们在命令行中如何执行一个Java的程序:

javac hello.java

java hello

只是我们在用Eclipse之类的IDE时,将这两部给融而成了一部而已.其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言

4.简述Python的运行过程

在说这个问题之前,我们现在说两个概念,PycodeObject和pyc文件.

我们在硬盘上看到的pyc自然不必多说,而其实PycodeObject则是Python编译器真正编译成的结果.我们先简单知道就可以了,继续向下看.

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,python解释器则将PycodeObject写回到pyc文件中.

当Python程序第二次运行时,首先程序会在硬盘中寻找pyc文件.如果找到,则直接载入,否则就重复上面的过程.

所以我们应该这样来定位PycodeObject写回到pyc文件,我们说pyc文件其实是PycodeObject的一种持久化保存方式.

pyc是个什么鬼?的更多相关文章

  1. 学习python,第三篇:.pyc是个什么鬼?

    .pyc是个什么鬼? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...

  2. .pyc是个什么鬼?

    1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言, ...

  3. .pyc是什么鬼

    .pyc是个什么鬼? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...

  4. python基础之pip、.pyc、三元运算、进制、一切皆对象、可变与不可变类型

    一.pip(下载工具==yum) 1.重点(必须掌握的) 列出已安装的包 pip list 安装要安装的包 pip install xxx 安装特定版本 pip install django==1.1 ...

  5. Python基础1

    本节内容2016-05-30 Python介绍 发展史 Python 2 0r 3? 安装 Hello word程序 变量 用户输入 模块初识 .pyc? 数据类型初识 数据运算 if...else语 ...

  6. python之路二

    .pyc是个什么鬼? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...

  7. Python之路第一课Day1--随堂笔记

    课堂大纲: 一.Python介绍 二.发展史 三.Python 2 or 3? 四.安装 五.Hello World程序 六.变量 七.用户输入 八.模块初识 九..pyc是个什么鬼? 十.数据类型初 ...

  8. Python之路,Day1 - Python基础1

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  9. Python 简介和入门

    1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

随机推荐

  1. AMOLED原理介紹

    1. OLED发光原理 OLED(Organic Light Emitting Display,有机发光显示器)是指有机半导体材料在电场驱动下,通过载流子注入和复合导致发光的现象.其基本原理是用ITO ...

  2. 控制台执行java找不到或无法加载主类

  3. 一个sql server 实施工程师的反思

    自14年开始从事数据库实施,至今(2018-02-16)晃眼间已经四个年头过去了,工作上的能力要求多数能自己解决,可这不应该成为我学习路上的终点.加之总觉得自己对sql 的理解有些浮于表面,所以借着春 ...

  4. March 11 2017 Week 10 Saturday

    Wisdom outweighs any wealth. 智慧比财富更有价值. Wisdom can create wealth if used in proper ways, it can help ...

  5. ZT在谷歌上班感受如何?

    在谷歌上班感受如何? 2013-11-05 作者:腾讯科技 出处: 互联网 责编:zlu     在谷歌这家全球最大最有抱负的技术公司工作将是怎样的情景呢?是天堂般的享受,还是地狱般的折磨呢?下面看一 ...

  6. 如何将iso文件安装到VirtualBox里的ubuntu去

    我在Window的virtualbox里安装了一个ubuntu: 默认情况下IDE Secondary Master是空的. 方法1:Devices->Insert Guest Addition ...

  7. Jmeter入门12 __time函数 jmeter获取当前系统时间

    有的接口要传递当前的日期或时间,可以用__time()函数获取当前时间 ${__time()} 当前时间到计算机元年的毫秒数 ${__time(时间格式)}  以预定的格式显示当前时间  请求示例: ...

  8. 【转载】#443 - An Interface Cannot Contain Fields

    An interface can contain methods, properties, events or indexers. It cannot contain fields. interfac ...

  9. Python:函数的命名空间、作用域与闭合函数

    1,参数陷阱 如果默认参数的只是一个可变数据类型,那么每一次调用的时候,如果不传值就共用这个数据类型的资源. 2,三元运算 c=a if a>b else b#如果a>b返回a,否则,返回 ...

  10. SSH 本地和服务器传输

    [转]https://www.cnblogs.com/magicc/p/6490566.html SCP 使用方式如下: 1.上传本地文件到服务器 scp /path/filename usernam ...