pyc是什么意思网络词,PY是啥梗
1.解释语言和编译语言的区别。
因为计算机无法识别高级语言,所以在运行高级语言程序时,需要“翻译人员”负责将高级语言转换成计算机可读的机器语言。这个过程分为两类,第一类是编译,第二类是解读。
(1)编译语言:在程序执行之前,编译器对程序进行编译过程,将程序转换成机器语言。运行时不需要翻译,直接运行即可。最典型的例子就是C语言。
)2)解释器语言:没有编译过程。程序运行时,解释器逐行解释程序,然后直接执行。最典型的例子就是Ruby。
3)编译语言和解释语言的优缺点:编译语言在运行之前就已经对程序进行了翻译,运行时“翻译”的过程较少,所以效率很高。但不能一概而论。
(4)先编译后解释语言:Java首先被编译器编译成字节码文件,然后在运行时被解释器解释成机器文件。有基于虚拟机的语言(比如Jva),分不出解释型和编译型两种。Python也是一种基于虚拟机的语言。在命令行中键入python hello.py实际上会激活python的“解释器”,并告诉“解释器”“您要开始工作了”。但是在“解释”之前,实际执行的第一项工作和Java一样,是编译。
2.Python的运行过程
1)关于PyCodeObject和pyc文件:硬盘上看到的pyc文件,实际上PyCodeObject是Python编译器实际编译的结果。当python程序运行时,编译结果存储在内存中的PyCodeObject中,python解释器将pycodeObject写回PyC文件。python程序第二次运行时,程序首先在硬盘上寻找pyc文件,如果找到,就直接加载。否则,重复上述步骤。因此,可以说pyc文件实际上是PyCodeObject的永久存储。
什么是pyc文件?Pyc是一个二进制文件,是编译py文件后生成的文件,是一个字节码。当py文件变成pyc文件时,加载速度会加快。另外,pyc是跨平台的字节码,由python虚拟机执行。这就是JAVA和。网。pyc的内容与python的版本有关,不同的版本编译不同的pyc文件。用2.5编译的Pyc文件不能在2.4中运行。
因为对pyc文件的需求太明显了。Py文件可以直接看到源代码,所以如果是开发商业软件,就不能泄露源代码。所以你需要把它编译成pyc,然后发布。当然,pyc文件也可以反编译。不同版本编译的Pyc文件是不一样的。根据python源代码提供的操作码,可以基于pyc文件反编译py文件的源代码。你可以在网上找到一个反编译Python 2.3版pyc文件的工具,但是这个工具是从Python 2.4版开始收费的。如果需要反编译新版本的pyc文件,必须自己动手,但是可以修改python源代码中的操作码文件,然后重新编译python,防止非法人员破译。
Python可以生成一个pyc文件,这是一件好事。它提供了一个内置的类库,用于将py文件编译成pyc文件。模块是py_compile模块。
lor:rgb(51,51,51);背景色:rgb(255,255,255);字体系列:Arial使用方法很简单,如下图,可以在idle中直接把一个py文件编译成pyc文件。(假设在windows环境下)
导入py _编译
py _ compile . compile(r h:/game/test . py )
编译函数原型:
编译(文件[,cfile[,dfile[,doraise]])
File表示要编译的py文件的路径。
Cfile表示编译后的pyc文件的名称和路径。默认情况下,C或O直接加在文件名后面,O代表优化的字节码。
这个参数dfile用英语看不懂。请给我你的意见。(鄙视自己)original:在错误消息中代替file作为源文件的名称
Doraise可以是两个值,真或假。如果为True,将引发PyCompileError否则,如果编译后的文件有错误,就会出现错误,默认显示在sys.stderr中,不会抛出异常。
(来自python2.5文档)
批量生成pyc文件一般来说,我们的项目都在一个目录下。一般来说,我们不只是编译一个pyc文件,而是需要编译整个文件夹中的所有PYC文件。python为我们提供了另一个模块:编译全部。用法如下:
导入编译器all
compile all . compile _ dir(r h:/game )
这样游戏目录及其子目录下的py文件就编译成pyc文件了。嘿嘿,真是够方便的。看一下compile_dir函数的描述:
compile_dir(dir[,maxlevels[,ddir[,force[,rx[,quiet]]])
Dir表示要编译的文件夹位置。
Maxlevels表示需要递归编译的子目录的层数。默认为10层,即10层子目录下的py文件会默认编译成pyc。
Ddir English不理解,原文:它被用作生成错误消息中使用的文件名的基本路径。
如果force为真,将被强制编译成pyc。即使当前的pyc文件是最新的,它也会被强制编译一次。pyc文件包含时间戳,python编译器会根据时间决定是否需要再次重新生成pyc文件。
Rx代表正则表达式,比如可以排除不需要的目录,或者只编译符合条件的目录。
如果quiet为True,编译后信息将不会在标准输出中打印。
(来自python2.5文档)
通过总结以上方法,可以方便的将pyc文件编译成PyC文件,从而实现部分源代码隐藏,保证python作为商业软件使用时的部分安全性。继续学习,看看如何修改操作码。