python字节码兼容性

标签 python bytecode

Python 字节码在不同版本之间的兼容程度。 我不是在谈论 python2.x 到 python3.x,而是说……Python33 到 python34?

我不是为了“安全”而追求它我使用 Cython 将程序的大部分转换为 C,但是我确实使用 pyc 文件作为存储一些常量的方式并且 pyc 是更可取的,因为它提供了一种文件格式'很容易被非正式地改变。如果有人想要更改,他们可以通过内部程序请求

这样的 pyc 文件只包含变量 stf python 中的 Int、float、list、dict、string。 一个类,但它更像是一个容器/结构。

这是一个很大的否定还是这是一个尝试,因为正在存储一些非常基本的 python 字节码数据

最佳答案

Python 不保证版本之间的字节码兼容性。不要依赖它。

事实上,一个 pyc 文件以一个魔数(Magic Number)开始,每次编码代码都会改变这个魔数(Magic Number),python 检查这个数字的兼容性。由于此代码在每个版本中几乎都会发生变化,因此魔数(Magic Number)也会发生变化。参见 Ned Batchelder's blog entry了解详情。

有更好的方法可以确保您的文件未被篡改:例如校验和。

关于python字节码兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22449524/

相关文章:

python - 克隆和深复制之间的区别?

python - 按日期字符串索引时间序列

python - 无法在 Django 模板中加载 css

java - 将 "new Class[]{String.class}"放入堆栈的 BCEL 代码示例

python - 哪个版本的 BeautifulSoup 可与 GAE (python 2.5) 配合使用?

python - Django: AttributeError: 'UniqueConstraint' 对象没有属性 'fields_orders'

java - 是否有可能追踪到哪个表达式导致了 NPE?

java - 读取class文件并替换class文件的内容

java - 操作从 ASM 生成的字节码

J2ME 上的 Java 类/字节码编织/编辑?