python源程序执行的方式是边编译边执行吗_Python代码是编译执行还是解释执行?...

2023-11-10

有人在讨论 Python 代码是编译执行还是解释执行?这个问题还可以换一种说法: Python 是编译型语言还是解释型语言?回答这个问题前,我们先弄清楚什么是编译型语言,什么是解释型语言。

所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译。不过它是针对特定CPU体系的,这些目标代码只能在特定平台执行,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。它不具备可移植性,但是执行速度快,C、C++这类语言属于编译型语言。

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

编译型相当于厨师直接做好一桌子菜,顾客来了直接开吃,而解释型就像吃火锅,厨师把菜洗好,顾客需要自己动手边煮边吃,效率上来说解释型语言自然比不过编译型语言,当然也不是绝对了,像 JIT 的效率就很高

以上是对编译型语言和解释型语言的一个简单粗暴的区分,但是 Python(这里主要是指CPython)并不是严格的解释型语言,因为 Python 代码在运行前,会先编译(翻译)成中间代码,每个 .py 文件将被换转成 .pyc 文件,.pyc 就是一种字节码文件,它是与平台无关的中间代码,不管你放在 Windows 还是 Linux 平台都可以执行,运行时将由虚拟机逐行把字节码翻译成目标代码。

我们安装Python 时候,会有一个 Python.exe 文件,它就是 Python 解释器,你写的每一行 Python 代码都是由它负责执行,解释器由一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码,所以,解释型语言其实也有编译过程,只不过这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码。

总结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python源程序执行的方式是边编译边执行吗_Python代码是编译执行还是解释执行?... 的相关文章

  • js实现---加油站问题(贪心算法)

    加油站问题 贪心算法 基本要素 贪心选择 在对问题求解时 总是做出在当前看来是最好的选择 也就是说 不从整体最优上加以考虑 他所做出的是在某种意义上的局部最优解 最优子结构 当一个问题的最优解包含其子问题的最优解时 称此问题具有最优子结构性
  • 树形结构互转

    树形结构互转 1 线性转树形 lineToTree list const list list map e gt id e id pid e parentId label e name raw e const addChild arr obj
  • TPE原理总结

    hyperopt TPE 在hyperopt tpe py 935 处打一断点 5 超参的取值 3 loss的取值 GMM1 GMM1 lpdf len dict literal broadcast best getitem sub arr
  • 三星s9系统更新无法连接服务器,三星 S9/S9+ 手机开始推送 One UI 2.1 系统固件更新...

    IT之家6月15日消息 外媒SamMobile报道 三星Galaxy S9和Galaxy S9 现在正在获取其最新的重大更新OneUI 2 1 今天开始在韩国和德国版三星S9 S9 中推送 上一周 德国版Galaxy Note9手机开始推送
  • Linux拷贝U盘文件(命令行)

    Linux系统有的有界面 有的没有只要命令窗口 因此导入外部文件就变得困难 没有可视化的方便 这里通过挂载u盘进行文件拷贝 首先挂载u盘 这里以centos为例 1 进入命令行模式下 输入命令 sudo i 获取root权限 2 mkdir
  • sqli-labs-master第13、14关。

    前言 输入内容被放到双引号中 报错型注入 注释符不可用 第十三关 http 192 168 89 134 sqli labs master Less 13 先输入 admin 我们还是分析一下 我们接着用and来测试 admin and 1
  • windows下tensorflow CUDA_ERROR_ILLEGAL_ADDRESS解决办法

    最近在使用tensorflow的时候出现了以下所示的bug 2017 11 08 12 24 52 838039 E tensorflow stream executor cuda cuda driver cc 1080 failed to
  • Spring事务回滚报错:org.springframework.transaction.UnexpectedRollbackException

    具体异常信息 Transaction rolled back because it has been marked as rollback only 出现了不可预知的回滚异常 因为事务已经被标志位只能回滚 所以事务回滚了 java lang
  • 视图的优点与缺点

    视图的优点 一 视图着重于特定数据 视图可以让用户或者程序开发人员只看到他们所需要的数据 而不需要把表中的所有信息与字段暴露出来 这样增强了数据的安全性 二 简化数据的操作 易维护 我们可以将经常用到的多表联合查询出来的数据 或特定的结果集
  • python django 环境搭建

    一 版本选择 Django 1 5 x 支持 Python 2 6 5 Python 2 7 Python 3 2 和 3 3 Django 1 6 x 支持 Python 2 6 X 2 7 X 3 2 X 和 3 3 X Django
  • 学习了解jboss7

    1 什么是J2EE J2EE是Java 2enterprise edition 是Java的一种企业版 用于企业级的应用服务开发 J2SE是Java 2standard edition 是Java的标准版 用于标准的应用开发 J2ME是Ja
  • mysql-8.0.32 数据库的安装 (Linux)

    Linux 中 mysql 8 0 32 数据库的安装 缘 步骤 常见问题解决方案 问题一 mysql error while loading shared libraries libtinfo so 5 cannot open share
  • java spring jdbc配置

    整理了一下java spring框架的jdbc 首先说明一下这个jdbc是在myeclipse下配置的 适合初学者 第一步我们在myeclipse下建立一个web项目 然后右击 项目名称 鼠标移动到 myeclipse 下 然后再移动到右边
  • 自动化运维:Ansible脚本之playbook剧本

    目录 一 理论 1 playbooks 2 YAML 3 使用ansible批量安装apache服务 4 定义 引用变量 5 指定远程主机sudo切换用户 6 when条件判断 7 迭代 8 Templates 模块 9 tags 模块 1
  • Linux 通配符 与 正则表达式 的区别与详解

    阅读目录 1 扫盲 2 通配符详细介绍 3 实例 背景 在linux使用过程中 经常需要查找文件 对命令中的通配符 pattern 和正则表达式的区分不是很清楚 有必要好好研究一下 1 扫盲 1 1 通配符和正则表达式 当在使用命令行时 有
  • python另存为excel_python 将数据保存为excel的xls格式(实例讲解)

    python 将数据保存为excel的xls格式 实例讲解 python提供一个库 xlwt 可以将一些数据 写入excel表格中 十分的方便 贴使用事例如下 引入xlwt模块 提前pip下载好 import xlwt 使用workbook
  • MySQL数据库技术知识总结

    数据库基本概念 数据库 是以一定方式储存在一起 能予多个用户共享 具有尽可能小的冗余度 与应用程序彼此独立的数据集合 一个数据库由多个表空间 Tablespace 构成 数据库就是一个存储结构化数据的仓库 数据库管理系统 Database
  • 蓝桥杯2019年c++b组国赛题目及题解

    填空题目来源来自于 https blog csdn net l503301397 article details 90697079 大题来源于 ACwing https www acwing com problem search 2 csr
  • Altium designer 15 导入PCB各层都透明,修改各层透明度依然不好使

    Altium designer 15 0导入PCB后 整个图都变透明了 不能移动PCB上的器件 可以查看器件 修改各个层的透明度依然不好使 后来发现显示PCB维度框有问题 解决方法如下图 选择下拉列表里的任意参数就可以解决这个问题 这里选择

随机推荐

  • 用rfkill命令管理蓝牙和wifi

    rfkill是一个内核级别的管理工具 可以打开和关闭设备的蓝牙和wifi 列出所有可用设备rfkill list 输出如下 0 phy0 Wireless LAN Soft blocked no Hard blocked no2 hci0
  • Strapi 之API详述

    API的使用 REST API允许通过API端点访问 content types 当一个内容类型被创建时 Strapi会自动创建API端点 在查询API端点时 可以使用API参数来细化结果 可以理解为 对于每一个 content types
  • 工业协议网关IOTCS企业版正式发布

    一 发布前言 继今年5月份IOTCS开源版本发布以后 我们依然在致力于开源版的功能升级迭代 目前南向驱动类型支持OPCUA与Siemens S7协议 1200 1500型号 以及Modbus全协议 北向资源有HTTP MQTT 通过不同的连
  • 怎么设置访问服务器文件夹权限凭据,Windows server 共享文件夹权限设置

    概念 共享权限应用于通过网络连接到共享文件夹的用户 共享权限不会影响本地登录或使用远程桌面登录的用户 若要为本地登录用户或使用远程桌面登录的用户设置权限 请使用 安全 选项卡而不是 共享权限 选项卡 这样将在 NTFS 文件系统级别设置权限
  • 数组的三种定义方式

    1 数组的定义 用于存储同一类型数据的集合 其实数组就是一个容器 连续的存储单元 2 数组的好处 自动给数组中的元素从零开始编号 自动给下标 从零开始0 1 2 3 3 书写格式 元素类型 数组名 new 元素类型 元素 元素 元素 3 1
  • 新的一期AIGC训练营,9月16日开启#一起build anything

    时间 9月16号 周六 10 00 17 00地点 上海请自备电脑 window系统最佳 Mac也可以 现在早鸟报名 享受优惠价格 999 人 原价 1699 人 名额先到先得 早鸟报名还能获赠 699 AIGC知识库会员名额 新的一期训练
  • SRAM和SDRAM的区别

    DRAM 动态随机存取存储器 需要不断的刷新 才能保存数据 而且是行列地址复用的 许多都有页模式 SRAM 静态的随机存取存储器 加电情况下 不需要刷新 数据不会丢失 而且 一般不是行列地址复用的 SDRAM 同步的DRAM 即数据的读写需
  • C语言 弱定义

    说明 函数名称前面加上 WEAK属性修饰符称为 弱函数 类似C 的虚函数 链接时优先链接为非weak定义的函数 如果找不到则再链接带weak函数 意义 这种自动选择的机制 在代码移植和多模块配合工作的场景下应用较多 例如前期移植代码 需要调
  • 完全卸载docker

    停止docker服务 systemctl stop docker 列出所有docker相关组件 yum list installed grep docker 删除上一条命令列出来的所有组件 yum y remove xxxx 谨慎操作 删除
  • 因果推断(五)——反事实,后悔药?

    反事实推断一个词概括就是 后悔 例子 还是以小夏开店为例 小夏请了A明星代言后 销售量虽然有提升 但是由于该明星的代言费很贵 导致最终还是亏本了 于是 小夏想要是当时没有请明星代言 会不会就不亏本了 推断没有发生过的事情 就是反事实推断 当
  • shell编程基础(四)-shell特殊符号

    目录 符号总览 1 输出 输入重导向 1 井号 comments 1 帐户的 home 目录 1 分号 Command separator 1 连续分号 Terminator 1 点 dot 2 string 单引号 single quot
  • k8s leaderelection

    const LEASELOCKNAME tes LEASELOCKNAMESPACE kube system func main LeaseLockID uuid New String client InitClientSet run fu
  • 少儿机器人编程与软件编程区别

    现在社会 机器人编程是一门博大精深 有着多学科融合性的课程 针对少儿方面 林林总总的相关编程培训也是层出不穷 格物斯坦来分析下这两者的区别所在 纯软件是个虚拟的世界 简单而完美 就像我们上学时所说的理想条件下 而真实世界太复杂了 并且总有意
  • 十分钟了解MES系统的发展历程和标准体系

    在20世纪70年代后期到21世纪这阶段 企业之间的主要竞争因素发生了较大的变化 客户对产品的需求逐渐多样化 制造企业的生产模式也开始由大批量的刚性生产变为了多品种 小批量的柔性生产模式 生产线也从以前的手工方式转为了以自动化的机器人生产线为
  • 使用R语言中的data

    使用R语言中的data table包进行数据操作和转换是非常高效和方便的 其中 melt函数是一个非常实用的函数 可以将数据表从宽格式转换为长格式 在本文中 我将详细介绍如何使用melt函数 以及通过源代码示例展示其用法和效果 1 什么是宽
  • Java什么情况下数据类型可以自动转换?什么情况下需要强制转换?

    在程序中 当把一种数据类型的值赋给另一种数据类型的变量时 需要进行数据类型转换 自动类型转换也叫隐式类型转换 指的是两种数据类型在转换的过程中不需要显式地进行声明 当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时 系统就
  • minikube:部署一个nginx应用

    通过run命令运行pod 创建pod minikube kubectl run nginx image nginx port 80 查看pod的ip minikube kubectl get pods o wide 遇到查看不到IP的问题可
  • 关于自定义视图容器(Container View Controller)

    苹果对UIViewController以及其使用有着非常详细的文档 UIViewController Reference ViewController Programming Guide 一 UIViewController 作为iOS开发
  • 惠普笔记本重装win10系统教程

    惠普PAVILION 15 AU034TX X0S89PA 重装系统教程 文章目录 惠普PAVILION 15 AU034TX X0S89PA 重装系统教程 1 Bios设置启动盘 2 开始重装系统操作 3 电脑基本设置 4 激活win10
  • python源程序执行的方式是边编译边执行吗_Python代码是编译执行还是解释执行?...

    有人在讨论 Python 代码是编译执行还是解释执行 这个问题还可以换一种说法 Python 是编译型语言还是解释型语言 回答这个问题前 我们先弄清楚什么是编译型语言 什么是解释型语言 所谓编译执行就是源代码经过编译器编译处理 生成目标机器