首页 > 编程知识 正文

面向对象程序设计,有了pycharm还需要python吗

时间:2023-05-03 07:08:16 阅读:136329 作者:1919

什么是pyc文件? pyc是二进制文件,是编译py文件后生成的文件,是字节码。 当py文件成为pyc文件时,加载速度会提高。 此外,pyc是跨平台的字节码,由Python虚拟机执行。 这是像Java和. NET这样的虚拟机的概念。 pyc的内容与python的版本有关,不同版本编译的pyc文件不同。 用2.5编译的pyc文件不能在2.4中运行。

为什么需要pyc文件是因为py文件可以直接看到源代码。 如果你在开发商业软件的话,也不能泄露源代码吧。 所以你需要编译成pyc,然后再发布。 当然,pyc文件也可以反编译。 不同版本编译的pyc文件不同。 根据python源代码提供的opcode,可以基于pyc文件反编译py文件的源代码。 您可以在网上找到反编译python2.3版本pyc文件的工具,但该工具将从python2.4开始收费。 如果需要反编译新版本的pyc文件,则必须自己动手,但可以自己修改python源代码中的opcode文件,然后重新编译python,以防止非法人破译。

生成单个pyc文件的python是一个好东西,它为将py文件编译为pyc文件提供了内置类库。 此模块是py_compile模块。

使用非常简单,可以直接在idle中将一个py文件编译为pyc文件,如下所示。 (windows环境下的设想)

import py_compile

py _ compile.com pile (r ' h :/game/test.py ' ) )。

compile函数原型:

compile(file[,cfile[,dfile[,doraise]]] ) )

file表示需要编译的py文件的路径

cfile表示编译的pyc文件的名称和路径,缺省情况下,在文件文件名后加上c或o、o表示优化的字节码

dile:itisusedasthenameofthesourcefileinerrormessagesinsteadoffile

doraise可以有True或False两个值。 如果为True,则抛出PyCompileError。 否则,编译文件时会出现错误,缺省情况下显示在sys.stderr中,并且不会抛出异常

ize:14px; line-height:26px"> (来自python2.5文档)

批量生成pyc文件

一般来说,我们的工程都是在一个目录下的,一般不会说仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python又为了我们提供了另一个模块:compileall 。使用方法如下:

 

import compileall

compileall.compile_dir(r'H:/game')

这样就把game目录,以及其子目录下的py文件编译为pyc文件了。嘿嘿,够方便吧。来看下compile_dir函数的说明:

 

compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])

dir 表示需要编译的文件夹位置

maxlevels 表示需要递归编译的子目录的层数,默认是10层,即默认会把10层子目录中的py文件编译为pyc

ddir :it is used as the base path from which the filenames used in error messages will be generated。

force 如果为True,则会强制编译为pyc,即使现在的pyc文件是最新的,还会强制编译一次,pyc文件中包含有时间戳,python编译器会根据时间来决定,是否需要重新生成一次pyc文件

rx 表示一个正则表达式,比如可以排除掉不想要的目录,或者只有符合条件的目录才进行编译

quiet 如果为True,则编译后,不会在标准输出中,打印出信息

(来自python2.5文档)

总结

通过上面的方法,可以方便的把py文件编译为pyc文件了,从而可以实现部分的源码隐藏,保证了python做商业化软件时,保证了部分的安全性

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。