Python笔记(10)什么是.pyc
2020-07-14 05:40
459 查看
#!/user/bin/env python # -*- coding:utf-8 -*- # author:berlin #python是一门解释性语言。但是生成的.pyc文件是什么? # c应该是compiled的缩写,编译的缩写。 # 解释性语言和编译性语言的区别? # (1)首先计算机是不能识别高级语言的,所有运行一个高级语言程序的时候,就需要一个“翻译机” # 把高级语言转变为计算机能够读懂的机器语言。那么这个过程分为两类: # 第一种是编译;第二种是解释 # (2)编译性语言在执行之前,先会通过编译器对程序进行一个编译的过程,把程序转变为机器语言, # 运行时就不需要翻译,而是直接执行就可以了。最典型的例子是C语言。 # (3)解释性语言没有编译的过程,而是在程序运行的时候,通过解释器对程序逐行做出解释,然后 # 直接运行。最典型的例子是Ruby # 解释性语言和编译性语言的各自优缺点? # (1)理论上或者大多数实际中,编译性语言因为在运行之前已经进行了翻译,所以运行时效率较高。 # (2)但不能一概而论,解释性语言可以通过解释器的优化在对程序作出翻译时对整个程序作出优化, # 从而效率上超过(超过不太现实,应该是接近)编译性语言。 # 此外,随着java等基于虚拟机的语言的兴起,我们又不能把语言纯碎的分为解释性、编译性两种。 # 以java为例,java首先是通过编译器译成字节码文件,然后在运行时通过解释器把字节码文件解释为 # 机器文件。所以说java是一种先编译后解释的语言。 # python到底是什么? # 其实python和java、C#一样,yes一门基于虚拟机的语言。 # 当我们在命令行中输入python hello.py时,其实是激活了Python的解释器,告诉解释器:你要开始工 # 作了。可是在解释之前,其实执行的第一项工作和java一样,是编译(不可见的)。 # 熟悉java的同学可以想一下我们的命令行中如何执行一个java的程序: # javac hello.java # java hello # 只是我们在用Eclipse之类的IDE时,将两部分给融合成了一部分而已。其实Python也一样,当我们执行 # python hello.py时,它也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门 # 先编译后解释的语言。 # 那么python的运行过程是怎么样的? # 在说过程概念前,先了解两个概念:PyCodeObject和.pyc文件。 # .pyc文件不必多说,在路径中可以看到。而其实PyCodeObject则是Python编译器真正编译成的结果。 # 两个概念简单知道即可。 # 当Python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时, # Python解释器则将PyCodeObject写回到.pyc文件中。 # 当python程序第二次运行时,首先程序会在硬盘中寻找.pyc文件,如果找到,则直接载入,否则就重复 # 上面的过程。 # 所以我们应该这样来定位PyCodeObject和.pyc文件:.pyc文件其实是PyCodeObject的一种持久化保存方式。
相关文章推荐
- 笨办法学python笔记:习题10 那是什么(转义字符)
- Python笔记10-模块
- Python学习笔记(10)-选择结构与循环结构
- python学习笔记1:python是什么
- 学习笔记(10):Python数据清洗实战-数据修改和查找
- Python标准库笔记(10) — itertools模块
- Python学习笔记之疑问 7:自定义模块放在什么位置
- Python学习笔记(10)-生成器generator和迭代器Iterator
- python学习笔记10——列表生成式,字典生成式
- Python基础自学实用笔记 (三):9、random库 10、数值类型 11、查看数据类型 12、运算符优先级 13、条件表达式(三元操作符) 14、断言(assert)15、for循环
- Day10 Python面向对象编程学习笔记10
- python生存10位数密码笔记
- python笔记10-多线程之线程同步(锁lock)
- python复习笔记[10] —— 面向对象程序设计
- python2.7学习笔记(10) ——面向对象高级编程
- python数据挖掘实战笔记——文本挖掘(10):自动摘要
- Python学习笔记10:Python错误和异常
- 老男孩Python笔记_10
- python笔记10-面向对象
- 【python学习笔记】模块导入的搜索路径顺序是什么?