pyc pyo pyd 代表什么含义

本文问题来源于stackoverflow,原文链接

What does python file extensions, .pyc .pyd .pyo stand for?


这些 python 文件后缀是什么含义?

  • .pyc
  • .pyd
  • .pyo

他们之间有什么不同,他们是怎么从一个 *.py 文件产生的?


2 答案

  1. .py: 这个是你编写的源文件。
  2. .pyc: 这是编译过的二进制代码文件. 如果你导入一个模块, python 将创建一个 *.pyc 文件,文件中内为二进制码,这样可以在再次导入时更容易(更快)。
  3. .pyo: 这是一个当优化等级 (-O) 开启时生成的 *.pyc 文件。
  4. .pyd: 这个相当于一个 windows dll 文件. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

关于 .pyc 和 .pyo更深入的探讨,请移步这里: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (以下是其中比较重要的部分)

  • When the Python interpreter is invoked with the -O flag, optimized code is generated and stored in ‘.pyo’ files. The optimizer currently doesn't help much; it only removes assert statements. When -O is used, all bytecode is optimized; .pyc files are ignored and .py files are compiled to optimized bytecode.
  • Passing two -O flags to the Python interpreter (-OO) will cause the bytecode compiler to perform optimizations that could in some rare cases result in malfunctioning programs. Currently only docstrings are removed from the bytecode, resulting in more compact ‘.pyo’ files. Since some programs may rely on having these available, you should only use this option if you know what you're doing.
  • 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.
  • When a script is run by giving its name on the command line, the bytecode for the script is never written to a ‘.pyc’ or ‘.pyo’ file. Thus, the startup time of a script may be reduced by moving most of its code to a module and having a small bootstrap script that imports that module. It is also possible to name a ‘.pyc’ or ‘.pyo’ file directly on the command line.

 *.pyd 文件和 DLL一样吗?

是的, .pyd 文件就是 dll’, 但是有一些不同之处。 

关于这个问题的回答,python官网有详细的回答:

Yes, .pyd files are dll’s, but there are a few differences. If you have a DLL named foo.pyd, then it must have a function initfoo(). You can then write Python “import foo”, and Python will search for foo.pyd (as well as foo.py, foo.pyc) and if it finds it, will attempt to call initfoo() to initialize it. You do not link your .exe with foo.lib, as that would cause Windows to require the DLL to be present.

Note that the search path for foo.pyd is PYTHONPATH, not the same as the path that Windows uses to search for foo.dll. Also, foo.pyd need not be present to run your program, whereas if you linked your program with a dll, the dll is required. Of course, foo.pyd is required if you want to say import foo. In a DLL, linkage is declared in the source code with __declspec(dllexport). In a .pyd, linkage is defined in a list of available functions.





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在线pycpyo反编译是指通过在线工具或网站将Python编译后的.pyc或.pyo文件转换回可读的源代码的过程。Python源代码在运行之前会被编译成字节码(.pyc或.pyo文件),这样可以提高执行效率。然而,由于.pyc和.pyo文件并非完全加密,因此可以通过反编译工具将其转换回可读的源代码。 在线pycpyo反编译通常使用反编译器工具来实现。这些工具可以读取.pyc或.pyo文件的字节码,并将其转换回源代码形式。有些工具甚至还可以还原出原始的变量名称和代码结构,使得反编译的源代码与原始源代码非常接近。 在线pycpyo反编译通常用于以下情况: 1. 学习目的:对于学习Python编程的人来说,通过反编译可以获得其他人编写的代码的思路和技巧,加快学习过程。 2. 代码审查:在某些情况下,需要对他人编写的代码进行审查和分析,以确保代码的安全性和质量。反编译工具可以帮助审查人员更好地理解代码的功能和实现。 3. 调试目的:有时,在调试Python程序时,通过查看反编译后的代码,可以更好地理解程序的执行逻辑和问题所在。 需要注意的是,虽然在线pycpyo反编译可以将编译后的文件转换回源代码形式,但生成的源代码并非完全和原始源代码一致。编译过程中存在一些优化和变换,有些信息可能会丢失。另外,反编译出的代码可能会被修改过,不一定能够完全反映原始代码的意图。 总之,在线pycpyo反编译是一种将Python编译文件还原为源代码的方法,常用于学习、审查和调试等目的。 ### 回答2: 在线pyc,pyo反编译是指通过在线工具或平台对Python编译后的二进制文件(.pyc或.pyo)进行逆向操作,将其转化为可读的源代码。反编译可以帮助开发人员了解某个Python程序的工作原理以及内部实现细节。 反编译对于开发人员来说是一个很有用的工具,它可以帮助我们理解某些已编译的Python代码,无论是为了学习、调试还是分析代码,都可以通过反编译来获得更多的信息。 值得注意的是,反编译只适用于已经编译成二进制文件的Python代码,而对于普通的.py源代码文件是不需要进行反编译的。当我们使用在线的反编译工具时,我们需要上传或指定相应的二进制文件,工具会将其反编译成Python源代码。 然而,需要注意的是,反编译得到的源代码可能不完全等同于源代码文件,因为编译过程中可能会有一些优化和变换。此外,反编译也可能会面临一定的法律和伦理问题,因此在使用反编译工具时需要遵守所在国家和地区的相关法律法规。 总结来说,在线的pyc,pyo反编译工具可以将编译过的Python二进制文件转化为可读的源代码,用于学习、调试和分析代码。但使用反编译工具需要遵守相关法律法规,并且反编译得到的代码可能存在与源代码不完全一致的情况。 ### 回答3: 在线pyc,pyo反编译是指通过在线工具或网站对Python编译文件(.pyc或.pyo)进行逆向操作,将其还原成可读的Python源代码。反编译可以帮助我们了解编写该文件的人所使用的算法和逻辑,以及修复已编译文件中的错误或进行研究和学习。 在线pyc,pyo反编译工具通常使用解析已编译文件的字节码并将其转换回等效的Python源代码。这些工具会分析字节码中的指令和数据,并尝试还原这些指令和数据的含义,最终生成与原始源代码相似(但可能不完全一样)的代码。但是由于编译文件是通过将源代码编译为字节码生成的,反编译得到的源码通常不会与原始源代码完全一致,因为编译过程会引入额外的优化和转换。 在线pyc,pyo反编译存在一定的限制和局限性。首先,编译文件中的注释和变量名等元信息通常会丢失,因此反编译得到的源代码可能会缺少这些有用的信息。其次,编译过程中可能会进行各种优化,例如常量合并、循环展开和内联函数等,这些优化可能会导致反编译的源代码与原始源代码存在一定的差异和不一致性。 总体来说,在线pyc,pyo反编译是一种有助于理解和研究Python代码的工具,但它并不是万能的,无法完全还原原始源代码的结构和细节。因此,在使用在线反编译工具的过程中,我们应该谨慎对待反编译得到的源代码,并结合其他信息和工具进行分析和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值