您的位置:首页 > 编程语言 > Python开发

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的一种持久化保存方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: