python 是解释型的语言吗?它会被编译吗?
这个问题没有想象中那么好回答。和很多人认识世界一样,习惯以一个简单的模型去评判一些事物。而事实上,里面包含了很多很多的细节。
通常的说法,编译代表着将一个高级语言转化为 cpu 能执行的机器码。当你编译 c 的时候,的确是做的这样的操作。编译的结果是一个二进制可执行文件,这时你的系统可直接运行这个程序。
与此相对的,解释的意思是这样的:程序运行时每次读源文件中的一行代码,并执行相应的操作,就这样一行一行的重复下去。当然,所谓的脚本语言就是这么运行的。
在 python 中,源代码会被编译为更低级的一种形式,我们称之为字节码。字节码是一串指令,和 cpu 的指令集类似。但是字节码并不直接被 cpu 执行,而是在虚拟机中执行的。当然,这里的虚拟机并不模仿整个操作系统的环境,只是提供了字节码执行的一个环境。
python 还有一个重要的特性,就是交互式命令行。你可以敲入一行 python 语句,然后立刻回车执行。实际上,即使是这个过程,python 同样是先转为字节码,然后执行。而这个交互式命令行这个特性,在很多编译型语言里是没有的。同样因为没有显示的调用编译程序,很多人将执行 python 源文件的程序叫做 python 解释器。
即使比较简略,但还是补充下。部分编译型语言比如 c 或者 java 也有交互式命令行,但这些并不是这些语言的重心。java 刚开始是编译成字节码然后执行,后面有了即时编译技术( jit )可以直接编译成机器码,与 c 类似。
从上面的描述可以看出,不管是解释还是编译,并没法完全分离开来。很多时候,我们想用一些词将现有的编程语言分个类,但事实上要办到这一点太难了。
python 之所以称为解释型语言,是因为它没有显示的调用编译操作,表现出解释型的特性比较多而已。但事实上,编译是存在的,具体怎么编译就看语言的实现了,也就是解释器的设计。
i3-9100F与锐龙3 3200G哪个好
商务部贸易救济调查局发文:《LED显示单元337调查案应对取得胜利》
AMD 新品发布会移动低压处理器 R7 5800U亮相: 8 核 16 线程、领先英特尔 i7-1185G7
电工基础:如何计算电缆桥架填充率
MySQL事务的四大隔离级别详解
python是解释型语言吗?会被编译吗?
小鹏汽车关联公司投资成立广州鲲鹏创投合伙企业
电磁炉用什么锅最好_电磁炉天天炒菜费电吗
保护电动汽车和充电站:将车辆和用户的网络安全问题结合起来
一加5什么时候上市?一加5最新消息:更多细节大曝光,可能很难买到!
MAX19693 DCLK抖动评估
能够为电子设备提供直充电源的单片机智能控制充电器
DeepSpark 开源社区百大应用开放平台23.09版本正式发布
中国高端医疗器械和微流控芯片市场巨大
汽车多功能控制开关的原理设计
功能安全解决方案如何帮助启动汽车安全设计
山东移动联合华为在济宁邹城的海外产业园成功开通了首个5G站点
透明直流电机的制作方法
C to Lightning的C89和C94连接器正式取代原有C48连接器
夏普隆重推出了SH-06A及SH-07A两款千万像素手机