当前位置:首页 » 编程软件 » python代码的编译过程

python代码的编译过程

发布时间: 2022-05-16 12:12:28

1. python代码运行需要编译

有人在讨论 Python 代码是编译执行还是解释执行?这个问题还可以换一种说法: Python 是编译型语言还是解释型语言?回答这个问题

前,我们先弄清楚什么是编译型语言,什么是解释型语言。

所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译。不过它

是针对特定CPU体系的,这些目标代码只能在特定平台执行,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。

它不具备可移植性,但是执行速度快,C、C++这类语言属于编译型语言。

而解释型语言是在代码运行期间逐行翻译成目标机器码,下次执行时,还是需要逐行解释,我们可以简单认为 Java、Python 都是解释型

语言。

编译型相当于厨师直接做好一桌子菜,顾客来了直接开吃,而解释型就像吃火锅,厨师把菜洗好,顾客需要自己动手边煮边吃,效率上来

说解释型语言自然比不过编译型语言,当然也不是绝对了,像 JIT 的效率就很高

以上是对编译型语言和解释型语言的一个简单粗暴的区分,但是 Python(这里主要是指CPython)并不是严格的解释型语言,因为

Python 代码在运行前,会先编译(翻译)成中间代码,每个 .py 文件将被换转成 .pyc 文件,.pyc 就是一种字节码文件,它是与平台无

关的中间代码,不管你放在 Windows 还是 linux 平台都可以执行,运行时将由虚拟机逐行把字节码翻译成目标代码。

我们安装Python 时候,会有一个 Python.exe 文件,它就是 Python 解释器,你写的每一行 Python 代码都是由它负责执行,解释器由

一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码,所以,解释型语言其实也有编译过

程,只不过这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码。

总结

Python代码首先会编程一个字节码文件,再由虚拟机逐行解释,把每一行字节码代码翻译成目标指令给CPU执行。

推荐学习《Python教程》。

2. python代码解释

Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。易学
Python极其容易上手,因为Python有极其简单的语法。免费、开源
Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。高层语言
用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。可移植性
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。解释性
一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。面向对象
Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。可扩展性
如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。可嵌入性
可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。丰富的库
Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。规范的代码
Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。

3. Python 代码例子,怎样编译成.py文件

直截复制保存到文本文件中就行,然后把文件扩展文改为.py。
要注意缩进,python代码是靠
缩进
确定代码层次关系的。

4. python程序如何工作

随着人工智能时代的来临,python成为了人们学习编程的首先语言。那么,python程序怎么运行的?我们下面来介绍下。

python程序执行原理

我们都知道,使用C,C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制可执行文件。运行该程序的时候,就可以二进制程序从硬盘载入到内存中并运行。

相关推荐:《Python教程》

但是对于Python而言,Python源码不需要编译成二进制代码,它可以直接从源代码运行程序。Python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行。当我们运行Python程序的时候,Python解释器会执行两个步骤。

(1) 把源代码编译成字节码。编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是Python代码无法运行的像C,C++一样快的原因。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc为扩展名的文件,如果Python无法在机器上写入字节码,那么宇节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给Python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件可以重复利用,提高执行效率。

(2) 把编译好的字节码转发到Python虚拟机(PVM)中进行执行。PVM是Python Virtual Machine的简称,它是Python的运行引擎,是Python系统的一部分,它是迭代运行字节码指令的一个大循环,一个接一个地完成操作。

5. python中怎样对编写的程序进行编译和执行

1、说明 编译python程序就是把python脚本转换成操作系统中的可执行文件,一般使用pyinstaller来完成。 2、步骤 1)安装pyinstaller 使用pip install pyinstaller命令来安装 2)编译脚本 python安装目录\script\pyinstaller 脚本文件名

6. 如何编译Python使之成为可执行程序

Python是一个强大的工具,可惜不是每个人的计算机里面都有安装。当您写了一个好用的工具。要如何让那些没有安装Python的人使用你的工具呢?
对于这样一个需要standalone exectuable环境的需求,直到撰写经验为止,只看到两个比较好用且有持续维护的套件。一个是py2exe。另外一个就是本经验要介绍的PyInstaller。
1
PyInstaller安装

2

最新版本:PyInstaller 2.0
3

直接“解压缩”之后即可使用,解压到您想让他在的路径即可
END

PyInstaller配置

1
事先写好py程序
2

在命令行执行:python Makespec.py --console --onefile NotePad\notepad.py
报错:Configfile is missing or unreadable. Please run Configure.py before building
3

在命令行执行:Configure.py
报错:Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/
4

安装最新版本的 pywin32-217.win32-py2.7.exe
END

PyInstaller使用

命令行中运行
目录切换到PyInstaller的安装目录“E:\pyinstaller-1.5\pyinstaller-1.

在PyInstaller的安装目录下新建一个文件夹(比如NotePad), 然后将要转换的py脚本放到文件夹里(notepad.py)
E:\pyinstaller-1.5\pyinstaller-1.5>python Makespec.py --console --onefile NotePad\notepad.py

E:\pyinstaller-1.5\pyinstaller-1.5>python Build.py NotePad\notepad.spec

验证exeE:\pyinstaller-1.5\pyinstaller-1.5>

E:\pyinstaller-1.5\pyinstaller-1.5\NotePad\dist\notepad.exe 0 0 100(成功)

查看生成的文件,生成的中间文件spec
查看生成的文件,生成的最终文件exe

END

注意事项

在转换之前要确保py程序可以正常通过
如果转换过程中出现什么错误,用搜索引擎搜索解决一下

7. python编程后如何编译成小程序

将python代码编译成exe文件的方法:

1、先在电脑上安装pyinstaller。

2、然后到指定目录下使用pyinstaller来将py文件编译成exe即可。

8. python需要编译么

一个经常听见的问题,那就是:Python是解释型的语言吗?它会被编译吗?这个问题没有想象中那么好回答。和很多人认识世界一样,习惯以一个简单的模型去评判一些事物。而事实上,里面包含了很多很多的细节。
通常的说法,编译代表着将一个高级语言转化为 CPU 能执行的机器码。当你编译 C 的时候,的确是做的这样的操作。编译的结果是一个二进制可执行文件,这时你的系统可直接运行这个程序。
与此相对的,解释的意思是这样的:程序运行时每次读源文件中的一行代码,并执行相应的操作,就这样一行一行的重复下去。当然,所谓的脚本语言就是这么运行的。
但事实上,上面的定义有太多的局限。一门真正的语言,为了拥有更多有用和强大的特性,通常采用了各种各样的实现方式。我们可以将编译理解为更通用一些:将一种语言转化为另一种语言形式。通常来说,源语言比目标语言要更高级一些,比如将 C 转化为机器码。当然,JavaScript 8 到 JavaScript 5 的转化也算是一种编译。
在Python中,源代码会被编译为更低级的一种形式,我们称之为字节码。字节码是一串指令,和 CPU 的指令集类似。但是字节码并不直接被 CPU 执行,而是在虚拟机中执行的。当然,这里的虚拟机并不模仿整个操作系统的环境,只是提供了字节码执行的一个环境。
下面我们看 Python 的一小段代码以及它对应的字节码
看了字节码的内容后,我们就知道 f'...' 这种格式化字符串的形式的运行原理,就是将里面的字符串转化为一系列的字面字符串与变量,然后使用 + 号连接起来。
dis 是 Python 标准库中反汇编模块,它可以展示 Python 代码的字节码信息。上面提到的执行字节码的虚拟机,可以用任意的语言实现,包括 Python 自己。有兴趣的可以去 GitHub 上看下这个项目 nedbat/byterun 。这个项目可以用来学习,但不适用于生产环境。
不过,我们运行 Python 时完全感受不到它的编译过程,没有显示的调用什么编译程序,仅仅是简单的执行 .py 文件,编译都是需要时自动编译的。这和 JAVA 不同,当你每次写完 JAVA 代码要执行时,都要手动将其编译为 .class 文件,然后执行。也正是这个原因,JAVA 被称为编译型语言,而 Python 被叫做解释型语言。但事实上,两种语言执行时都会先编译成字节码,然后交给虚拟机执行。
Python还有一个重要的特性,就是交互式命令行。你可以敲入一行 Python 语句,然后立刻回车执行。实际上,即使是这个过程,Python 同样是先转为字节码,然后执行。而这个交互式命令行这个特性,在很多编译型语言里是没有的。同样因为没有显示的调用编译程序,很多人将执行Python源文件的程序叫做Python解释器。
即使比较简略,但还是补充下。部分编译型语言比如 C 或者 JAVA 也有交互式命令行,但这些并不是这些语言的重心。JAVA 刚开始是编译成字节码然后执行,后面有了即时编译技术( JIT )可以直接编译成机器码,与 C 类似。
从上面的描述可以看出,不管是解释还是编译,并没法完全分离开来。很多时候,我们想用一些词将现有的编程语言分个类,但事实上要办到这一点太难了。
最后要说明的是,你的代码是怎么执行的只是语言的实现问题,并非语言的特征。上文中,我们讨论的是 Python ,但实际上是 CPython 的描述。CPython 是一个解释器,之所以这么叫,是因为这个解释器是用 C 编写的,这也是 Python 默认的解释器。当然还有其它很多解释器,比如,PyPy 就是另一种解释器,使用了 JIT 技术,运行速度相比 CPython 有较大提升。
回到标题中的问题,Python之所以称为解释型语言,是因为它没有显示的调用编译操作,表现出解释型的特性比较多而已。但事实上,编译是存在的,具体怎么编译就看语言的实现了,也就是解释器的设计。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python需要编译么的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

9. 什么是python编程

Python是一门新兴的编程语言,编程语言有很多,比如C++、Java、C#、PHP、JavaScript等,Python也是其中之一,在学习Python前,我们需要对它有一定的了解。
Python支持多种编程范型,如函数式、指令式、结构化、面向对象和反射式编程。
Python解释器易于扩展,可以使用C或C++或其他可以通过C调用的语言扩展新的功能和数据类型。
Python编写的程序不需要编译成二进制代码,可以直接从源代码运行程序,在计算机内部,Python解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。
语法简洁而清晰,具有丰富和强大的类库,使用Python快速生成程序的原型,然后对其中有特别要求的部分,用更合适的语言改写,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。
只有基础建牢固了,才会更利于我们以后的发展及进步,现如今Python的发展十分迅速,已经将C++语言甩在了后边,在不久的将来,可能会超过C和Java这些主流语言。

10. python如何编译使用源文件

我是 拧发条的鸟 口中的楼上 和 azaleammm 口中的楼上的楼上……

因为系统找不到python.exe,所以说"NO SUCH……“
你需要进入python目录
c:\python25>
这样的状态输入python XXX.py 才会认
当然你也可以在系统变量里面把PYTHON的工作目录添加进去。
另外,py文件最好也放到PYTHON目录,免得python找不到。

另外,由于PYTHON在LINUX下使用的很多,WINDOWS下应用较少。作者的工作环境就是linux,你看这句#!/usr/bin/python。

针对 拧发条的鸟 和 azaleammm 的回复:
1、对系统(WINDOWS)来说,默认查找目录是当前目录和WINDOWS\ 、windows\system32目录。不在这几个目录中的EXE是提示“XXX不是一个有效的内部或外部命令或可执行程序”(十分抱歉!现在WINDOWS系统说的不是NO SUCH FILE OR DIRECTORY,我和其他的什么系统计混了,感谢azaleammm纠正)
进入PYTHON25目录输入命令可以解决。
对PYTHON来说,默认查找目录是PYTHON25\下的所有子目录。不在这几个目录中提示的是:
“C:\Python25\python.exe: can't open file 'XXX': [Errno 2] No such file or director”
你应该把hellow文件放在PYTHON能够找到的目录,比如C:\PYTHON25\

#!usr/bin/python这句话不是必须的,一般只是LINUX下的作者习惯,我从来都不写
# Filename : helloworld.py 我也从来都不写。
因为LINUX下是不安扩展名而是按文件类型识别文件的,如果文件名不是*.py,LINUX根据这两句注释识别文件类型并自动选择程序打开。

你直接双击的话到是可以执行,但是执行完后他就自动关闭了,所以一闪就没。实际如果你的机器很烂就可以看到屏幕显示了HELLOW WORLD。

如果你实在搞不清楚,就在IDLE中,文件〉新建〉
然后再新窗口中把代码加入进去,然后点击上面的运行(RUN),或者按F5

IDLE 2.5……恕我火星,是python 2.5里面带的那个IDLE吧,版本应该是1.2。
有RUN,啊,当然不是在交互模式下了(交互下从来就没有),是在编辑模式下。
FILE〉NEW WINDOW ,
看看这一贴:
http://..com/question/48354047.html
RUN前PYTHON让你存,你就存,存完交互那里就有了(白底蓝字的HELLO WORLD)

555555明明只是一个HELLOW WORLD而已……为什么说了这么多话。还有什么问题给我发消息。

热点内容
电脑开机有密码rpc服务器不可用 发布:2024-05-03 12:40:54 浏览:471
硬件的算法 发布:2024-05-03 12:34:28 浏览:388
支付密码为什么就六位 发布:2024-05-03 12:29:17 浏览:920
脚本找书 发布:2024-05-03 12:02:17 浏览:493
境外服务器租用怎么办 发布:2024-05-03 11:45:34 浏览:943
我的世界服务器怎么设置到重生点 发布:2024-05-03 11:33:04 浏览:752
mysqllinux安装包下载 发布:2024-05-03 11:32:07 浏览:934
以太算法的币 发布:2024-05-03 11:30:45 浏览:383
编译nfs 发布:2024-05-03 11:30:40 浏览:432
srs搭建直播服务器 发布:2024-05-03 11:29:53 浏览:133