Python语言概述及其运行机制详解

article/2025/10/19 16:22:56

即日起,我们将打开一个新的编程世界的大门——Python语言。Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

首先声明,Python系列博文将参考大量的优秀书籍、网站和博文,博主对其进行精心整理总结,并与大家分享之。Python系列博文包括但不限于以下部分:

  • Python基础语法全体系:基本数据类型、组合数据类型、程序控制结构、函数式编程、文件IO与文本处理、数据格式化、常用模块、经典题目解析等
  • Python核心编程:面向对象高级编程、异常处理、正则表达式、网络编程、多线程编程、GUI编程、数据库编程等

博文中有任何错误和不当之处,敬请大家以评论或私信形式告知,谢谢!


文章目录

    • Python语言简介
    • Python语言的特点
    • Python语言不可忽视的问题
    • Python程序运行机制详解
      • 深入理解 ‘解释与编译’
      • Python解释器
      • Python 解释器的几种实现版本


Python语言简介

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。官方宣布,2020 年1月1日,停止 Python 2 的更新。Python 2.7 被确定为最后一个 Python 2.x 版本。现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言 Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

  • Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言:这意味着,我们可以在一个 Python 提示符 >>> 后直接执行代码。
  • Python 是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python语言的特点

1、简单易学、可读性高、语法优美:Python遵循"简单、优雅、明确"的设计哲学。在 Python 语言中,采用缩进来标识代码块,通过减少无用的大括号、语句末尾的分号等视觉杂讯,使得代码的可读性显著提高。阅读一段良好的 Python 程序就感觉像是在读英语一样,能够专注于解决问题而非纠结于繁琐的语法结构。

2、开发效率高:Python是一种高级语言,相对于C来讲,牺牲了性能而提升了编程人员的效率。它使得程序员可以不用关注底层细节,而把精力全部放在业务逻辑的实现上。

3、广泛的标准库: Python 语言号称自带电池,寓意是 Python 语言的类库非常的全面,Python的最大的优势之一就是它丰富的库。

4、强大的第三方库、应用领域广泛:Python社区提供了大量的第三方模块,使用方式与标准库类似。功能涵盖计算机视觉、科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统多个领域。

5、互动性:互动性的支持,我们可以从终端输入执行代码并获得结果,互动的测试和调试代码片断。

6、可移植性:基于其开放源代码的特性,Python已经被移植到许多平台。

7、可扩展性与可嵌入性:如果我们需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,那么可以使用C/C++完成那部分程序,然后从Python程序中进行调用。当然,我们也可以将Python嵌入到C/C++程序中,使程序的用户获得"脚本化"的能力。

数据库与GUI编程:Python提供所有主要的商业数据库的接口;Python支持GUI可以创建和移植到许多系统调用。


Python语言不可忽视的问题

1、运行速度慢:由于Python是解释型语言,程序的代码在执行时会一行一行地翻译成CPU所能理解的机器码,这个翻译过程非常耗时,但是由于C/C++语言是编译型语言,程序直接编译成机器码,因此 Python 的运行速度相比C/C++语言确实慢很多。但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助专业的测试工具。那么其实对于大多数情况,Python是完全可以满足我们对程序速度的要求的,除非编写对运行效率要求极高的程序。

2、Python2 与 Python3 不兼容

3、代码无法加密:对于解释性语言,发布程序,就是发布源代码。对于保密性高的程序,Python语言并不适合。

4、多线程无法利用多核CPU:Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行。


Python程序运行机制详解

深入理解 ‘解释与编译’

我们首先了解一下解释型语言与编译型语言

计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算机高级语言。高级语言允许使用自然语言(通常就是英语)来编程,但高级语言的程序最终必须被翻译成机器指令来执行。

当然,计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器指令,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器指令。而这种转换的方式有两种:编译、解释。高级语言按照计算机执行方式不同可分成两类:静态语言和脚本语言,静态语言采用编译执行,脚本语言采用解释执行。

编译型语言在程序执行之前,需要一个特定的编译过程,把源代码编译成计算机可以执行机器码,之后直接运行编译后的文件即可。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。例如C、C++、Go等属于编译型语言。

编译型语言具有以下特点:

  • 对于相同源代码,编译所产生的目标代码执行速度更快。
  • 与特定平台相关,一般无法移植到其他平台,因此编译型语言的平台移植性并不好。

解释型语言使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。它不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。Python、Php等属于解释型语言,但Python并不是完全的解释性语言,后续会详述。

解释型语言具有以下特点:

  • 解释型语言每次运行都需要将源代码解释为机器码并执行,效率较低。
  • 只要平台提供相应的解释器,就可以运行源代码,所以解释性语言的平台移植性较好。
  • 解释执行需要保留源代码,程序纠错和维护十分方便。

解释和编译的区别在于编译是一次性地翻译,一旦程序被编译,不再需要编译程序或者源代码。解释则在每次程序运行时都需要解释器和源代码。

编译过程只进行一次,因此,编译过程的速度并不是关键,目标代码的运行速度是关键。因此,编译器一般都集成尽可能多的优化技术,使生成的目标代码具备更好的执行效率。然而,解释器却不能集成太多优化技术,因为代码优化技术会消耗运行时间,使整个程序的执行速度受到影响。

简单来说,解释执行、逐条运行用户编写的代码,没有纵览全部代码的性能优化过程,因此执行性能略低,但可以支持跨硬件或操作系统平台,保留源代码对升级维护十分有利,适合非性能关键的程序运行场景。

Python语言是一种被广泛使用的高级通用脚本编程语言,虽采用解释执行的方式,但它的解释器也保留了编译器的部分功能,随着程序运行,解释器也会生成一个完整的目标代码。这种解释器和编译器结合的新解释器是现代脚本语言为了提升计算机性能的一种有益演进。


Python解释器

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

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

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

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

因此,Python并非完全是解释性语言,它是有编译的,先把源码.py文件编译成.pyc或者.pyo,再由Python的虚拟机执行,相对于py文件来说,编译成.pyc和.pyo本质上和.py没有区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度。


Python 解释器的几种实现版本

Python解释器有三种主要的实现方式,CPython、Jython和IronPython 三种实现方式 。

CPython:CPython 是标准的实现,其它的都是有特定目标的。 CPython 是由C语言编写的,它是大多数OS预装的Python解释器,也是所有Python解释器中运行最快、最完整、最健全的

Jython:Jython 是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython 包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。因为Jython要比CPython 慢而且也不够健壮,它往往看作是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。

IronPython:IronPython 设计的目的是让Python 程序可以与Windows 平台上的.NET 框架以及与之对应的Linux的上开源的Mono编写成的应用集成。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/HU0hQM1H.shtml

相关文章

go语言开发环境搭建

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C代码的速度,而且更加安全、支持并行进程。 学习Go一部分是兴趣,一部分是…

汇编语言程序运行过程分析

实验项目程序运行过程分析综合性实验2020年11月 18日 一、实验综述 1.实验目的及要求 (1)掌握程序执行具体过程 (2)构建汇编语言的运行环境 (3)掌握汇编语言的编译连接过程 (4)掌…

【x86汇编】第六章 输出/输出和win32编程

文章目录 输入/输出指令和数据的传送方式输入/输出指令输入指令IN输出指令OUT串输入指令INS串输出指令OUTS 数据的传送方式无条件传送查询传送直接存储器中断传送 中断与异常中断的概念不可屏蔽中断 NMI可屏蔽中断 INTR除法出错溢出调试异常(单步)软中断…

总算编译通过了《自制编程语言》一书里的代码!

起初按照书里的说明来搭建Windows下的环境,卡在下载和编译正则表达式库“鬼车”的地方,后来留言给作者,才知道这个库已经转移到github上了(2018年4月25时点:https://github.com/kkos/oniguruma)&#xff0c…

脑语言v0.5.8 2500令【单字编程】

脑语言v0.5.8 2500令【单字编程】 【号】【单字】【多字】【英文】 1 1脑 脑语言 naoyuyan 2 配 配置 config 3 班 班级 grade 4 令 指令 command 5 述 描述 description 6 横 ■横 ■x 7 纵 ■纵 ■y 8 深 ■深 ■z 9 宽 ■宽 width 10 高 ■高 height 11 撑 缩放…

p4 编程语言环境配置

文章目录 前言建议直接看第二种方法第一种方法:p4官方教程里的方法(不建议,我没安装成功)1.1 下载并安装 Virtual Box1.2 下载并安装 Vagrant1.3 利用 Vagrant 安装虚拟机 第二种方法:直接导入已经配置好的虚拟镜像文件…

Python学习笔记 - Python语言概述和开发环境

一、Python简介 1.1 Python语言简史 Python由荷兰人吉多范罗苏姆(Guido van Rossum)于1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无聊时间,决心开发一门解释型程序语言。Python语言基于ABC教学语言开发的。1991年第一个Python解释器公…

西门子plc如何用c语言编程软件下载,s7一200编程软件下载安装

s7-200编程软件是专为西门子s7-200系列可编程控制器而设计开发的一款工业化编程工具,该工具基于Windows系统而开发,功能强大,既可用于开发用户程序,又可实时监控用户程序的执行状态,是西门子PLC用户不可缺少的开发工具。 软件特色 1、简单、易学,能够解决复杂的自动化任务…

2019常用的几种编程语言的简单介绍和特点以及应用领域

常用编程语言的特点以及应用 编程语言有很多种,以下就是对一些常用的编程语言的简单介绍和特点以及他们的一些应用领域。希望对你能有所帮助。 在介绍各种编程语言前,我们先来看一下下面这个图,从图中可以明显看出来,当前应用最…

【编程实践】编程语言之 Smalltalk

目录 Smalltalk 简介 什么是Smalltalk 理解Smalltalk 基础语法 方法与类 代码块 控制流

浅谈对话系统

随着社会发展,我们的生活中方方面面都充斥着各种对话系统,常见提供对话系统的组织有:运营商、电商、政府服务窗口等,刚才提到的例子一般都属于任务型对话系统。何为任务型的对话系统呢?指的就是用户通常通过该对话系统…

如何实现一个简单的对话系统

文章目录 前言一、为什么需要对话二、创建对话框1.创建Canvas2.创建Panel3.创建Text和Image4.Text介绍5.Image介绍 三、对话的实现(脚本)四、实际效果总结 前言 本文主要是对如何完成简单的游戏类对话做一个学习总结,新手菜勿喷 一、为什么需…

面向任务的对话系统

面向任务的对话系统 1.1 流水线方法1.1.1 语言理解1.1.2 对话状态跟踪1.1.3 策略学习1.1.4 自然语言生成 1.2 端到端方法 面向任务的对话系统一直是口语对话系统的重要分支。在本节中,我们将回顾面向任务的对话系统的流水线方法和端到端方法。 1.1 流水线方法 基于…

对话系统简单笔记

开放域对话系统:没有限定主题或明确目标,用户与系统之间自由对话。 特定域对话系统,面向具体任务。 如:任务型对话(siri),属于特定域,完成任务或动作,话轮数越少越好。…

自然语言处理与企业对话系统设计

原创:晏茜 资料来源:李俊 本文分享的主题分为两个部分,第一部分内容是关于企业级对话系统的简介,第二部分探讨对话系统和自然语言处理技术结合的领域。 1. 企业对话系统 我们首先来介绍一下企业级对话系统。谷歌的 CEO 桑达尔在 16 年曾发表言论,人工智能将通过各式各样…

定义对话系统

定义对话系统 一、定义对话系统的方法 以下方法论其实就是在定义对话系统,后面的 确定场景边界 梳理业务要素和知识库 撰写故事线 抽取对话流程 都是下面方法论的具体展开。 二、确定场景边界 1.创建机器人定位(机器人的性格定位) 2.明…

【对话系统】对话系统核心技术概要

概述 人机交互备受学术界的关注,人机对话是人机交互的核心。 对话系统是模拟人与人交流的计算机系统。 对话系统有很多分类方法。按照应用场景的不同,可分为开放域(闲聊式)和封闭域(检索式、知识问答式、任务式&…

UNITY 对话系统

1. 准备工作 创建一个画布(Canvas),画布中创建一个面板(Panel),面板中放个文本框(TEXT)和两个按钮(Button)(一个用于直接关闭,另一个…

最新对话系统综述

前言 首先介绍一篇对话系统领域综述最新的paper,写的非常好 2021年南洋理工大学发表的论文: https://arxiv.org/pdf/2105.04387.pdf 第一章:简要介绍对话系统和深度学习。 第二章:讨论现代对话系统中流行的神经模型及其相关工…

前沿重器[25] | 聊聊对话系统:多轮对话

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 近期,我再次总结了我的历史文章…