Python的前世今生,你必须知道的这10个方面
2026/9/13 10:48:46 网站建设 项目流程

这是一篇围绕前世今生展开的长文, 它详细地介绍了与之相关的10个方面的内容, 全文达5000余字, 其中部分内容是从Guido本人的博客原文里整理来的, 请耐心去阅读。目 录。

与 Guido 其人相关的蟒蛇诞生版本的解释器所具备的特点, 以及其应用领域, 与其他语言进行对比。

它是一种程序设计语言, 是面向对象的, 也是解释型的, 因人工智能以及大数据等这类概念而变得热门, 在如今Tiobe程序设计语言的排名里, 它跟Java、C语言等一同处在前3名。然而, 或许你并不知晓, 它比当下排名第一且应用最为广泛的编程语言Java的诞生时间还要早4年。

1. Guido其人

吉多·范罗苏姆, 出生于1956年, 是荷兰人, 是语言的发明人, 被称作之父, 还有BDFL(BDFL的含义之后会详细说明)。吉多说, 在那个时候, 自己没有丰富的社交生活, 比起单纯地看电视, 他更倾向于编程, 或者一边看电视一边编程。

2. 与蟒蛇

根据牛津词典的解释,,名词,蟒蛇、蚺蛇,英音

ˈpaɪθən

,美音

ˈpaɪθɑːn

这就是说, 身为一个英文词汇, 它原本的意思是蟒蛇、蚺蛇。那么, 为何Guido会挑一种 snake 的英文单词来当作一门程序设计语言的称呼呢? 实际上, 作为程序设计语言, 跟蛇没丝毫关联。Guido选它作为这门程序设计语言的名字, 主要存在三个方面的缘由:

首先, 存在一个最为关键的缘由, 那便是Guido身为喜剧Monty's的忠实拥趸, 并且Guido认为该单词读起来顺口且觉得颇为前卫;其次, 作为程序设计语言, 它契合当时以名人名字作为程序设计语言的惯例, 像Ada之类;再者, 作为程序设计语言, 它也符合CWI团队(Guido当时所在的团队)以电视节目命名程序的习惯。

实际上, Guido始终都拒绝把自身与蟒蛇建立起联系, 一直到后来, 有着名气的出版商O'打算在其第一本名为《 》的书籍封面上放置一只动物(鉴于运用动物图片当作图书封面乃是O'的传统做法), 而对于O'来讲, 要是非得挑选一只动物作为封面的话, 那么蟒蛇毫无疑问是个不错的选择。从这个时候开始, 它作为程序设计语言才跟蟒蛇产生了关联。

3. 的诞生

1989年12月, 为了把那无趣的圣诞节给打发掉, Guido发明了, 然而, 这一切倒要且从Guido的工作经历开始讲述起。

1956年1月, Guido在荷兰出生;1982年底, 26岁的Guido拿到了荷兰阿姆斯特丹大学的数学以及计算机科学硕士学位, 之后进入CWI(也就是荷兰国家数学和计算机科学研究院)工作。在CWI, Guido主要投身于ABC语言的设计与开发工作, ABC是CWI设计并且研发出来的一种具备交互式的、结构化的高级语言, 其目的在于取代当时的BASIC等语言。接下来的四五年时间里, 鉴于ABC项目未呈现出显著成功迹象, 此项项目被予以终止;紧接着, Guido依旧参与CWI的另外一个基于微内核而来的分布式系统项目;在1991年的时候, 因项目负责人离职这一缘故, Guido又一次加入CWI的另一个多媒体项目, 该项项目。

犹如Guido往后所讲的那般, 于CWI的经历对其诞生有着极其关键的作用, ABC项目赋予了他灵感, 该项目给予了他动力, 多媒体项目推动了其成长与发展。

Guido讲, 创造的起始动机在于项目里要运用高级语言, 然而用C语言去开发系统管理工具, 所花费的时间比较长, 且效率较为低下;并且鉴于各类缘由, 在shell当中执行的某些操作于项目内是无效的, 而且shell的本质乃是调用命令, 并非一种真正的语言, 没办法全面地调动计算机的功能。更为关键的是, 作为一个从根本上全新开展设计的分布式微内核系统, 项目诸多基本操作跟shell上一些传统的基本操作存在着极大的差异。因此, 得有那么一种语言, 它要充当C与shell之间的桥梁(the gap C and the shell), 这种语言既能如同C那样, 对计算机的功能接口进行全面调用, 又能够像shell那般, 实现轻松编程。并且, “the gap C and the shell”这句话在很长的一段时间里, 都作为该语言的主要口号以及定位。

那么, 在1989年12月份的那个圣诞节, Guido进行了设计以及开发语言的相关工作, 并且在1991年的时候, 发布了所拥有的第一个公开版本 0.9.0;1995年4月之际, Guido迁移到美国, 加入了CNRI;2000年之际, 有了成立;2001年的时候, PSF成立;2005年之时, Guido进入Docs工作;2013年的时候, Guido入职。

4. 的版本

1989年12月,开始实施。

1990年,CWI内部发布。

1991年2月20日, 其一出现是首个公开的发布, 它所具备的版本是以0.9.0为之标识。

1994年1月26日, 1.0.0发布。

2000年10月16日, 2.0.0发布。

在2008年12月3日的时候, 一款应用发布了新的3.0.0版本, 并且在同一年, 官方宣布2.X版本将会在2015年停止进一步的更新操作。

2010年7月3日,2.7.0发布。

2014年 , 作出宣布 , 2.X版本停止更新的时间 , 被延期至2020年 , 此后 , 不会存在任何更新 , 像源码的安全补丁之类的 ( .7倒计时网址: )。

当下, 最新的稳定版本乃是3.7.4, 然而2.X的最后版本是.7(当前最新版本是2.7.16)。关键的是, .X与.X在诸多语法以及功能库方面并不存在兼容性。

5. 的解释器

计算机仅能识别0、1二进制, 诸如等高级程序设计语言是以接近人类的语言书写而成的, 那么计算机怎样去认识呢, 这便需要一种被称作解释器的事物(等同于翻译人员), 而通常所说的在计算机上进行安装, 实际上安装的就是解释器, 如此一来, 当运用编辑器编写完代码后, 计算机才能够正确识别并执行相关代码。

的解释器有很多,如、、PyPy、、等。

Guido所编写的用C语言打造的解释器, 是官方标定的标准解释器, 是应用数量最多的, 是最为常见的解释器, 一般平常所说的、进行下载的、展开讨论的、实际使用的都是这个解释器。(官网: )

有着交互式解释器, 它比默认的shell好用得多, 像tab键能自动补全, 还会自动缩进, 能够支持一些dos命令, 具备内省等功能。最为直观的区别在于, 标准shell使用>>>当作提示符, 而它用In/Out:当作提示符;另外, 常用的编辑器是基于它的Web交互式编辑器。(官网: )

· Pypy, 它运用JIT动态编译技术,专门针对代码开展动态编译, 其执行代码的速度相较于解释器而言要更快一些。(官网: )

能够把代码编译成Java字节码, 且能在JVM上执行, 这是通过Java实现的。(官网: )

和类似那个东西, 它是运行在微软.Net平台之上的解释器, 能够直接实现把代码编译成为.Net的字节码。(官网: )

6. PEP

PEP是一种缩写, 其比较常见的翻译是增强提案或者改进建议书, 其核心开发者们常常针对相关问题、建议、标准等展开讨论, 最终会把确定好的内容整理为正式文档, 然后对外进行公示, 这就是PEP, 而每一个版本所具备的新特性亦或是变化, 都是经过了将PEP提案在社区决策层进行进一步讨论、投票做决议, 通过之后才形成的。

Guido被戏谑地称作‘BDFL( 终身的仁慈独裁者)’, 原因在于, 他会亲自去进行确认, 并且签署发布每一份PEP。

PEP依据内容差异被划分成IPS三类, 分别是I - PEP, P - PEP, 还有S - Track PEP。

PEP 0于2000年7月发布,是第一个PEP。

PEP 8在2001年7月被发布, 它是针对代码格式所制定的风格指南哪, 比如用4个空格缩进来展现层次关系, 每行的字符数量不能超过79个, 语句一直都放在文件的开头呢等等, PEP 8是程序员写代码应当遵守的格式规范。

在2004年8月被发布的PEP 20, 也就是那部著名的称作《The Zen of 》的之禅, 对于有关之禅的解读而言, 需要去参考。

《这可能是之禅《The Zen of 》最详细的解读》

PEP 572是在2018年2月发布的, 它提出了一种在表达式中为变量赋值的方法, 即使用符号“NAME: = expr”来赋值, 其目的是让代码变得更简洁, 运行速度更快。然而, 有一些开发人员却觉得这是一种糟糕的方法, 尽管代码的确更简洁了, 可存在清晰度欠佳的问题, 未能契合最初的本意。具体详情可查看“知乎: 如何看待 PEP 572? ”。这一改变, 反映的是Guido个人观点, 而非程序设计最佳方案, 从而引发很大争议, 甚至网上出现诸多中伤Guido的言论, 为此Guido很失望。2018年7月12日, Guido宣布卸任 BDFL, 原因是他称自己被PEP 572的意见淹没, 同时因年龄及一些健康方面原因宣布卸任。

7. PSF

PSF是某个软件基金会的缩写。该组织于2001年3月成立, 它是一个非盈利组织, 致力于推广和管理社区。比如开展开发核心版本工作, 进行智慧财产权管理, 举办含有开发者研讨会这一活动等, 还要进行募款等事务。该组织拥有2.1及以后各版本的版权, 在特定的shell中输入相应内容可查看。

8. 的特点

不存在毫无瑕疵的程序设计语言, 每一种语言都具备优点以及缺点, 优点与缺点并无法表明这种语言的优劣状况, 不同的语言所应用的场景存在各异之处。总体而言, 它是一种面向对象的、解释型的程序设计语言, 它拥有以下这些特点:

· 的优点

简单且易懂, 入门较为容易。它遵循着“简单、优雅、明确”这样的设计哲学, 其语法相对而言简单程度明显, 清楚程度突出, 更加接近人的自然表达习惯情形, 依此入门简单, 适合零基础初学者;强制予以缩进, 格式要求十分严格, 这样的情况更是强迫症者的福音之所在。

具备丰富的功能库, 能使开发效率得以提高, 且降低其难度, 有着数量庞大且种类多样的库涵盖网络爬虫、Web开发、GUI、游戏开发以及数据分析处理等领域, 像numpy、scipy等, 调用这些现成的库为程序编写极大地减少了难度。

对于跨平台以及可移植性而言, 它这种免费、开源的解释型语言情况, 所以, 它已经面向诸多平台做了移植。换而言之, 所有流程都在好多平台运作时基本上都不需要做出修改处理啰。

其他:面向对象、免费和开源、可嵌入性等。

· 的缺点

在运行速度方面, 相较于其他语言, 它是相对较慢的。它属于一门解释型语言, 其程序的运行速度, 比C、C++等语言要慢。

具备相对而言显得较低的安全性, 程序它的源代码实际是以明文的形式存在着, 要是没有被进行编译, 进而能够直接使用编辑器将其打开, 这样一来安全性较低。

然而, 跟Java相类似, 其执行流程是由解释器起初编译成字节码(像pyc文件那般), 接着再由解释器的虚拟机予以解释执行。所以, 实际上是先进行编译, 而后再解释执行, 并非单纯的解释执行。在程序执行之际, 首先查验是否存在pyc文件或者源代码(py文件)的最后修改日期是否处于pyc文件之先河, 如果是这样, 解释器会径直执行pyc文件, 而非从源文件开始执行。换句话讲, 和纯编译型语言相较, 执行速度更为迟缓, 然而相较于纯解释型语言, 执行速度又是更快些的。

此外, 针对安全性方面的问题, py 文件能够借由 -m 去将 src.py 编译成 pyc 文件, 或者借助编译的方式成为 exe 文件来发布, 又或者运用一些代码混淆的办法进行混淆之后发布, 然而这些途径仅仅只会在一定程度上对代码予以保密, 其相关破解或者反编译的办法也是相当易学的。另外, 被称作胶水语言, 要是的确有部分代码是需要进行保密的, 那么可以采用像 C、C++ 这类其他语言去编写, 随后在程序当中加以调用。但是, 终究是不存在完美的、无法被破解的加密方式的。

9. 的应用领域

能被应用于诸多领域, 像是网络爬虫, 数据分析, Web开发之处, 图像处理范畴, 科学计算领域, 人工智能方向, 自动化运维方面, 自动化测试等情况, 然而, 当下在贴近硬件以及移动开发里通常极少被运用。

2018 年, PSF 针对来自 150 多个国家的 2 万多名对象展开调研, 以该调研为依据, 其中 58%的用户将相关内容用于数据分析, 此外, 有 52%的用户运用其进行 Web 开发, 还有比例为 43%的用户把它用于系统管理方面, 另外, 38%的用户用途聚焦于机器学习, 以上这些情况均在该调研结果中有所体现。

10. VS 其他语言

按Tiobe的名次排列情况来看, 当下10大主要的程序语言涵盖了Java, C, 还有C++, 以及C#这一些等。

和部分别的语言相比较而言, 拥有学习难度较小、语法极其清晰、功能库十分丰富这类优势, 同样具备相同功能的代码, 代码数量仅仅是C或者Java的五分之一, 甚至是十分之一, 然而作为一种解释型语言来看, 它的运行速度于相对层面上较低, 安全性也比较差。

Java在1995年诞生, 它是当下应用最为广泛的, 并且是市场需求最为庞大的一门编程语言, 它被广泛运用于桌面应用, 移动应用, 企业级系统, 嵌入式设备, 网站建设等领域, 然而Java学习的难度相对来说比较高, 内存占用相较于C++而言更高而且启动时间较长久。

1972年诞生了C语言, 它属于一种结构化编程语言, 主要用于底层操作系统以及应用软件的开发, 几乎所有的现代编程语言都起源于C语言, 所以有人讲了解了后就等于了解了全部现代编程语言, 然而它学习的时候难度较大, 比较适宜有一定其他语言基础的学习者。

诞生于1983年的C++, 是一种面向对象的编程语言, 它解决了C语言不面向对象的缺点, 它主要应用于软件开发、搜索引擎、操作系统、视频游戏等之中, 相较于其他语言像LC、Java, C++的学习难度更高。

, 也就是所谓的JS, 它在1995年问世, 和HTML、CSS一同被称作前端开发三大语言,是一种运行于客户端浏览器之上的脚本语言, 主要是运用在Web前端开发方面。它的运行速度相对来讲比较快, 并且简单容易学习;然而, 其安全性以及在不同浏览器上的兼容性相对而言比较差。

PHP在1994年诞生, 它是一款用于服务器端的脚本语言, 主要用于Web服务器开发, 它有着简单易学的特点, 其社区活跃且庞大, 它与各类数据库协作畅通, 然而它作为解释性语言, 在速度方面和相同应用领域的其他语言相比比较慢, 并且它的错误处理机制糟糕。

和诸如C、C++、Java等一些主流语言相较, 最遭人诟病之处便是其运行速度较为迟缓, 可实际上, 好多时候这种运算速度是普通用户难以察觉到的, 像0.1秒与0.01秒这样, 虽说相差达10倍, 然而一般人是无法感知到的, 不过代码的数量是编程者易于感知的, 用10行代码达成一个功能跟用100行代码达成一个功能, 开发效率有着很大不同。由此, 开发效率跟运行速度之间的博弈, 就得依靠开发者自行去平衡, 比如说, 机器语言是速度最快的, 然而你并不具备运用机器语言进行编程的能力。

并非所有开发语言都有着相同的优缺点, 不存在毫无瑕疵的开发语言, 有的只是适配各种情况的开发语言, 开发者绝不能用一种语言自身存在的瑕疵去与其他语言展现出的优势相衬比。就好比同样是前往西藏之地旅行, 有的人会倾向于选择乘坐飞机出行, 有的人会更愿意搭乘火车前往到达, 有的人会偏好自驾这种方式, 有的人会选择徒步前行, 甚至还有人会选择以一步步磕长头的方式前往, 因为各自的目标不同, 动机不一样, 所处场景也有差异, 所以自然而然就会选用不同的方式。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询