首页/新闻资讯/正文详情

码匠教育:一份 Python 脚本,从写完到执行经历了哪些步骤

发布时间:2026/11/5 3:43:17 来源:云帆数科 栏目:资讯中心
码匠教育:一份 Python 脚本,从写完到执行经历了哪些步骤
许多人对于纯解释型语言所形成的印象是, 认为书写完毕的代码就是完全交由解释器以逐行读取的方式来直接执行。但实际上这并非真实情况, 一份脚本文件从编写完成到最终输出运行结果, 其间会经历若干不同的处理环节, 并且甚至也包含了编译这样的步骤, 只是因为整个处理流程对使用者来说是完全透明的, 所以导致很少有人去关注这个问题。当你在操作界面里面按下那个开始运行的按钮之后, 解释器这一方首先要去做的一个动作叫做词法分析。这个分析的过程就是针对你写好的那一整块代码内容执行拆开处理的操作, 把它分成很多个单独存在的最小的语法单位。这些语法单位具体可以是一些关键字、一些变量名称、还有运算符以及括号、甚至是字符串之类的东西。我们可以这么来理解, 这就像是在拆解一句话一样把整句话拆散变成一个个独立的词汇, 从而能够确认出来每一个部分到底属于什么样的类型。在这一步骤进行的过程中, 还要负责把代码文本里面存在的注释内容、那些多余的空格字符以及换行符号给过滤掉。这样做最终能够保留下来的就只有那些对语法意义有效的基本元素成分。在这一步骤里面, 它只去做拆分这样一个动作, 并且它不会去对逻辑的正确性或者是错误情况进行判断, 即便是所有的代码都是完全错误的, 同样也能够完成拆分的操作。在词法分析做完之后接着做语法分析这个过程, 解释器会把那些已经拆分好的语法单元, 按照语法规则去组合, 最后组合成一棵抽象语法树, 在这一部分的操作里头, 程序要去检查代码里面存在没有语法层面的错误, 像是缩进的方式不对、括号不能相互匹配、还有关键字的使用情况有错误, 这些类型的问题都是在当前的这个阶段里面被找出来的, 一旦检测出来确实有语法错误这样的状况出现, 整个程序就会直接抛出语法相关的异常信息, 同时立即终止后续的代码执行动作, 绝对不会再继续往后进行任何操作。这也是为什么程序在刚开始执行运行操作的时候, 就会立刻把一些语法方面的错误给报出来, 而并不是等到代码真正运行到了那特定的一行代码的位置上之后, 才再去出现那个报错的情况。语法检查通过了, 紧接着就进入了编译阶段。在解释器这个过程中, 它会把这个语法树编译成为字节码。这种字节码就是一种中间格式的指令。这种指令并不是cpu能直接运行的机器码类型。它是专门给虚拟机来使用的设计。要是导入的是外部模块的话, 它有时候会把编译好了的字节码保存成一个.pyc文件, 把这些文件放在相应的文件夹里面, 等到下次运行的时候去调用, 如果源代码本身没有进行过任何修改, 系统就会直接去读取那个.pyc文件, 这样做的好处就是不用重新进行编译操作, 从而节省了启动所需要的时间, 很多人在看到项目里面的.pyc文件时会感到好奇, 想知道这些文件具体起到什么作用, 实际上它们的作用就是作为编译之后所产生的字节码缓存。等编译的工作全部做完以后, 这才算是真正进入了去执行的那个阶段, 接着就由那个叫虚拟机的东西来把那些字节码给执行了。这个虚拟机会一条接一条地把你写的字节码指令给读取进来, 然后把它每一条都转成能对应得上当前操作系统的那些最底层的操作方式, 就这样才开始真真正正地着手去处理数据、再去执行相关的逻辑、最后再把结果给输出来。在整个这么个过程当中, 虚拟机负责去把那些不同操作系统之间存在的差异给屏蔽掉, 因此也就导致了同一个脚本文件, 能够在Linux系统上也能成功运行这件事情的发生。你要是弄清楚了这一步是怎么回事的话, 你就会真正明白过来, 原来它是属于那种先把代码编译成别的格式、然后再去解释的类型的一个程序方式, 它根本就没有直接去对着源代码去做解释这一个动作, 你既然知道了这一点的话, 你就能够理解得通为什么它跑起来的速度会比较慢, 比起像C语言这样的需要专门编译的那种类型的程序来讲是这样的一种状况, 因为那个生成的字节码是不能够直接被电脑里面的中央处理器拿去执行的一个东西, 所以中间必须要经过一个叫虚拟机的那个程序去做转换和处理的这么一下事情, 除此之外还要加上在执行运行过程中那些动态的处理行为存在, 自然就会造成性能上面会有一部分损失掉的现象。整体执行的时候, 对用户来说是完全透明的, 用户根本不需要去手动执行任何一步操作。但是, 如果大家去了解一下背后运行流程, 就能帮助我们更加深入地把各种特性也给弄明白, 一旦碰到报错情况的时候, 也能更清楚地去判断问题具体是出在了哪一个阶段, 这样排查起来也就更有方向感了。

相关推荐

如何安装 Windows 虚拟显示驱动:Virtual-Display-Driver 完整实操指南
如何安装 Windows 虚拟显示驱动:Virtual-Display-Driver 完整实操指南

如何安装 Windows 虚拟显示驱动:Virtual-Display-Driver 完整实操指南 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://gi… · 2026/11/5 3:43:17

让AI治理检查进入每一次PR:Asqav SDK GitHub Actions门禁与代码署名回执实战
让AI治理检查进入每一次PR:Asqav SDK GitHub Actions门禁与代码署名回执实战

【免费下载链接】asqav-sdk Python and TypeScript SDKs for verifiable evidence of AI agent actions. Signed receipts, policy enforcement, audit trails. Works with LangChain, CrewAI, MCP. 项目地址: https://gitcode.com/gh_mirrors/as/asqav-sdk 点击查看… · 2026/11/5 3:43:17

Qwen3Guard-Stream-0.6B 本地搭建与运行操作说明书
Qwen3Guard-Stream-0.6B 本地搭建与运行操作说明书

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 3:43:17

TED精读如何训练高阶英语思维与认知能力
TED精读如何训练高阶英语思维与认知能力

1. 项目概述:这不是一节普通英语课,而是一次认知升级的实操训练“跟TED演讲学英文:How AI can save our humanity by Kai-Fu Lee”——这个标题乍看是语言学习类内容,但真正懂行的人一眼就能看出,它根本不是在教“how … · 2026/11/5 4:39:54

PostgreSQL INSERT操作全面指南与性能优化
PostgreSQL INSERT操作全面指南与性能优化

1. PostgreSQL INSERT 操作深度解析PostgreSQL 作为一款功能强大的开源关系型数据库,其 INSERT 语句提供了远超基础数据插入的丰富功能。在实际开发中,合理运用这些特性可以显著提升数据操作效率和可靠性。1.1 基础语法与核心组件INSERT 语句的基础结构包… · 2026/11/5 4:39:54

Python在线考试系统开发:微服务架构与大数据分析实践
Python在线考试系统开发:微服务架构与大数据分析实践

1. 项目概述与设计背景在线考试系统作为教育信息化的重要载体,正在经历从传统纸质考试向智能化评估的转型。我们团队基于Python技术栈开发的这套系统,核心目标是解决三个行业痛点:一是人工阅卷效率低下,二是考试过程监管困难&… · 2026/11/5 4:39:54

MySQL执行机制解析与性能优化实战
MySQL执行机制解析与性能优化实战

1. 项目概述MySQL作为最流行的开源关系型数据库之一,其内部执行机制一直是开发者们关注的焦点。在实际工作中,我们经常遇到这样的困惑:为什么这条SQL执行这么慢?索引为什么没生效?连接池配置多少合适?要真正… · 2026/11/5 4:39:54

小波阈值去噪五种改进变体:原理、MATLAB实现与避坑指南
小波阈值去噪五种改进变体:原理、MATLAB实现与避坑指南

简介:面向信号处理初学者与工程实践者的MATLAB小波阈值去噪工具包,聚焦软阈值、硬阈值及五种改进阈值方法的快速实现。作者在wden、thselect与wthresh三个函数基础上进行改造,并进一步封装为filterWaveletTh函数,延续专栏一贯的代… · 2026/11/5 4:39:54

从NRZ到PAM4:SerDes高速链路调制选型、均衡与眼图调试
从NRZ到PAM4:SerDes高速链路调制选型、均衡与眼图调试

高速串行链路这个圈子,做得久了你会发现一个很有意思的现象:真正决定一个系统能不能跑通的,往往不是那几百页的协议栈,而是最底层那一对差分线上的信号到底长什么样。SerDes 系统里 NRZ 和 PAM4 这两种调制方式的取舍,… · 2026/11/5 4:38:47

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码