python运行pyc文件_Python pyc文件[通俗易懂]

python运行pyc文件_Python pyc文件[通俗易懂]什么是pyc文件pyc是由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。为什么需要pyc文件…

大家好,又见面了,我是你们的朋友全栈君。

什么是pyc文件

pyc 是由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python 的虚 拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。

为什么需要pyc文件

这个需求太明显了,因为py文件是可以直接看到源码的,如果你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。

pycodeobject与pyc文件关系

class A :

pass

def Fun():

pass

a = A()

Fun()

在Python编译完成后,一共会创建3个PyCodeObject对象,一个是对应CodeObject.py的,一个是对应class A这段Code(作用域),而最后一个是对应def Fun这段Code的。每一个PyCodeObject对象中都包含了每一个代码块经过编译后得到的byte code。但是不幸的是,Python在执行完这些byte code后,会销毁PyCodeObject,所以下次再次执行这个.py文件时,Python需要重新编译源代码,创建三个PyCodeObject,然后执行byte code。

很不爽,对不对?Python应该提供一种机制,保存编译的中间结果,即byte code,或者更准确地说,保存PyCodeObject。事实上,Python确实提供了这样一种机制——Pyc文件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148633.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅复制,深复制详解下载_复制时如何跳过一部分内容

    浅复制,深复制详解下载_复制时如何跳过一部分内容文章目录浅复制和深复制String类实现浅复制和深复制有关浅复制与深复制的定义为:对类进行复制的时候按位复制,即把一个对象各数据成员的值原样复制到目标对象中。当类中涉及到指针类型数据成员的时候,往往就会产生指针悬挂问题。看以下结构:class A{ public: int* a;};A a1;A b1=a1;b1=a1执行的是浅复制,此时a1.a和b1….

    2022年8月18日
    6
  • python计算坐标点欧式距离_计算Python Numpy向量之间的欧氏距离实例

    python计算坐标点欧式距离_计算Python Numpy向量之间的欧氏距离实例计算PythonNumpy向量之间的欧氏距离,已知vec1和vec2是两个Numpy向量,欧氏距离计算如下:importnumpydist=numpy.sqrt(numpy.sum(numpy.square(vec1-vec2)))或者直接:dist=numpy.linalg.norm(vec1-vec2)#补充知识:Python中计算两个数据点之间的欧式距离,一个点到数据集中其他点的距离之和#如下所示:#计算数两个数据点之间的欧式距离importn

    2022年6月19日
    53
  • Collie——基于 HTML5 的高性能 JavaScript 动画库

    Collie——基于 HTML5 的高性能 JavaScript 动画库Collie是一个JavaScript库,用于创建高度优化的HTML5动画和游戏。Collie可以运行在PC和手机上,使用HTML5Canvas和DOM。Collie能够多线

    2022年8月4日
    10
  • ORACLE新增主键问题【CREATE PRIMARY KEY AFTER CREATED A TABLE】

    ORACLE新增主键问题【CREATE PRIMARY KEY AFTER CREATED A TABLE】

    2021年7月25日
    222
  • android 学生模式,(续上篇)多亲AI助手——学生模式体验小记

    android 学生模式,(续上篇)多亲AI助手——学生模式体验小记(续上篇)多亲AI助手——学生模式体验小记2019-08-1811:02:5617点赞9收藏14评论朋友的多亲2,是过了好几手的。哦,原来不是他的,那上次半推半就借给我,是几个意思?寄走前,他允许我再摸摸。正好,本人还有几个疑问,需要验证。本篇体验,以问答形式撰写,没有废话,都是干货。网红遥控器值不值得买——多亲AI助手体验小记由来“多亲AI助手”到手,来自一位朋友,过两天还要还回去,并非全新,…

    2022年6月10日
    155
  • pycharm flask框架_挣钱的项目

    pycharm flask框架_挣钱的项目基于Pycharm轻松创建Flask项目需要pycharm专业版,社区版是没有项目模板的,也可以手动创建这几个文件夹完成模板的创建。打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask、Django等等,我们选择生成Flask的demo程序选择创建之后一个简易的Flask项目就出现在我们眼前,第一个是入口程序,还有一个static的静态目录,templates是模板存放的位置我们可以手动来启动这个Flask项目,但是这不是很理智的,在Pych

    2022年8月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号