当前位置:网站首页 > 技术博客 > 正文

pyc文件反编译到python源码



简述

Python 并非完全是解释性语言,它也存在编译。先将源码文件 *.py 编译为 *.pyc,然后由 Python 的虚拟机执行。相对于 *.py 文件来说,编译为 *.pyc本质上和 *.py 没有太大区别,只是提高了模块的加载速度,并没有提高代码的执行速度。

  • *.py:源码文件,由 Python 程序解释。
  • *.pyc:源码经编译后生成的二进制字节码(Bytecode)文件。

方式一:

假设,有一个名为 lxk.py 的源文件:

要编译为 *.pyc 文件,需要引入 Python 中的模块 py_compile,在交互模式下输入:

这样,*.pyc 文件就生成了:

编译之后的是一个二进制文件,打开:

测试:

方式二:

命令行下:python -m py_compile test.py

多个文件

import compileall compileall.compile_dir("存放海量py的目录")

命令行下:python -m compileall 存放海量py的目录

 

首先安装库

命令行下:uncompyle6 test.pyc > test1.py 

关于效率,Python 文档 “Compiled” Python files 中这样介绍:

A program doesn’t run any faster when it is read from a .pyc or .pyo file than when it is read from a .py file; the only thing that’s faster about .pyc or .pyo files is the speed with which they are loaded.

也就是说,运行速度相差无几,加载速度 *.pyc 稍占优势。当然,除此之外,还有一个很大的优点:隐藏源码!

这些是 Python 当中较常见的几种形式,其中最常用的是 *.py,因为使用起来比较灵活,可以很容易去修改代码。

注意: Python 3.5 中不再使用  文件,而是引入了一种更灵活的替代机制, 文件可以表示优化和未优化的字节码。优化级别信息可以包含在  文件的名字中,具体可参见:PEP 488。

  • 上一篇: MySQL多表查询
  • 下一篇: 逻辑回归操作步骤
  • 版权声明


    相关文章:

  • MySQL多表查询2025-08-24 08:30:02
  • 编曲宿主是什么2025-08-24 08:30:02
  • rrt算法全称2025-08-24 08:30:02
  • flow 开发2025-08-24 08:30:02
  • cxp接口协议2025-08-24 08:30:02
  • 逻辑回归操作步骤2025-08-24 08:30:02
  • 面向对象编程c++程序2025-08-24 08:30:02
  • clr错误8007000e怎么办2025-08-24 08:30:02
  • android 设置textview内容2025-08-24 08:30:02
  • 计算机系统组成及其工作原理2025-08-24 08:30:02