目录

Python


Python是一种广泛采用的高级编程语言,以其解释型特性和通用性而著称。它支持多种编程范式,包括但不限于结构化、过程式、反射式、面向对象以及函数式编程。Python具备动态类型系统和自动垃圾回收功能,能够有效地管理内存使用,并配备了一个庞大且多样化的标准库。其语言结构和面向对象的设计哲学,旨在协助程序员编写出既清晰又高效的代码,适用于各种规模的项目。

Python的诞生可追溯至1980年代后期,由吉多·范罗苏姆(Guido van Rossum)研发,其设计初衷是取代ABC语言。在某种程度上,Python也可看作是采用了M-表达式的一种LISP方言。自1991年Python 0.9.0首次发布以来,这门语言经历了显著的发展。Python 2.0在2000年面世,带来了众多新特性。而Python 3.0的发布于2008年,标志了该语言的主要修订,但并未与之前版本完全兼容。最终,Python 2系列在2020年随着2.7.18版的发布而终止支持。

Python的设计理念强调代码的可读性和简洁性,尤其是通过空格缩进来定义代码块的结构,这一点与C语言或Java形成鲜明对比,使得Python能够帮助开发者以更少的代码量表达复杂逻辑。

作为一种多平台兼容的语言,Python解释器几乎能在所有主流操作系统中运行。其官方实现CPython是用C语言编写的。作为一个由社群驱动的自由软件项目,Python由Python软件基金会(Python Software Foundation)负责维护。在全球范围内,Python因其易用性和强大的社区支持,已成为最受欢迎的编程语言之一。

历史


 Python创始人

Python的创始人吉多·范罗苏姆,在1982年至1995年间,参与了荷兰数学和计算机科学研究学会多个项目的工作。1989年的圣诞节期间,他决心开发一个新的脚本解释编程,作为ABC语言的继承者,并且用它替代Unix shell和C语言来进行系统管理,担负与Amoeba操作系统之间的交互操作并进行异常处理。他是BBC电视剧《Monty Python的飞行马戏团》的爱好者,所以选取了Python作为这个编程语言的名字。范罗苏姆作为Python的主要开发者,独自担负这个项目的发展决策者职责,直到2018年7月12日,他宣布从终身仁慈独裁者(BDFL)的职位上“永久休假”。他在2019年1月至11月参与了第一届五人掌控委员会继续领导项目发展。

在1991年2月,范罗苏姆在alt.sources上发布了最初代码(标记为版本0.9.0),这时就已经存在了带继承的类、异常处理、函数和核心类型list、dict、str等。在这个最初发行中就有了从Modula-3引进的模块系统,和异常处理机制。在1994年1月,Python达到了版本1.0,其主要新特征是由Amrit Prem提供的函数式编程工具lambda、map、filter和reduce。受Modula-3启发,Python 1.1介入了缺省参数值,Python 1.3介入了关键字参数。Python 1.4介入了对复数的内置支持,还包含了采取名字修饰的一种基本形式的数据隐藏。

在2000年10月,Python 2.0发布,它介入了列表推导式,这是从函数式编程语言Haskell中引进的;它支持了Unicode,还向垃圾回收系统增加了环检测算法。Python 2.1支持了静态嵌套作用域。Python 2.2进行了重大革新,将Python中用C语言写成的类型,和用Python语言写成的类,统一成在同一个层级中,使得Python的对象模型成为纯粹而一致的对象模型;还介入了迭代器,受CLU和Icon启发的生成器,和描述器协议。Python 2.3介入了从Dylan引进的方法解析次序。Python 2.4介入了集合类型,和函数修饰器。Python 2.5介入了with语句,并在官方实现中介入了抽象语法树。

在2008年12月,Python 3.0发布,它对语言做了较大修订而不能完全后向兼容。Python 3发行包括了2to3实用工具,它(至少部分的)自动将Python 2代码转换成Python 3代码。Python 3.4介入了异步I/O模块。Python 3.5介入了类型提示,和采用async/await语法的协程。Python 3.8介入了赋值表达式。Python 3.9介入了内置的针对容器类的泛化别名(types.GenericAlias)类型,并在官方实现中介入了新的语法解析器。Python 3.10介入了结构式模式匹配,和内置的联合类型(types.UnionType)。Python 3.11对官方实现进行了优化提速,并介入了except*子句。Python 3.12介入了类型参数语法和type语句。

Python 2.7的产品寿命结束日期最初设定为2015年,由于大量现存代码不能移植到Python 3,而延期支持至2020年。当前只有Python 3的稳定版本3.11和3.12与预览版本3.13正在被完全支持,但仍提供对3.8、3.9和3.10版本的安全性修正。

在2023年12月,活跃的Python核心开发者,选举Pablo Galindo Salgado、Gregory P. Smith、Barry Warsaw、Emily Morehouse和Thomas Wouters,为2024年度“掌控委员会”的五位成员来领导这个项目。

特征与设计哲学


Python是一种多范式编程语言,它不仅完全支持结构化编程和面向对象编程,还包含了对函数式编程和元编程的显著支持,如元对象协议(包括元类和魔术方法)。通过适当的扩展,Python还能够支持面向方面编程、契约式设计和逻辑编程等范式。

Python采用动态类型系统,并结合引用计数和环检测机制来管理内存。它还实现了动态名称解析(后期绑定),允许在程序执行期间绑定方法和变量名。

尽管Python对LISP传统的函数式编程支持有限,但它提供了诸如map、filter和reduce函数,以及列表推导式、字典、集合和生成器表达式等工具。标准库中的functools和itertools模块进一步实现了从Haskell和Standard ML等语言借鉴的函数式编程工具。

Python的设计哲学强调“优雅”、“明确”和“简单”,这些原则被广泛称为“Python之禅”。在Python解释器中运行import this可以获取这些原则的完整列表,其中包括:

Python开发者遵循一种方法论的指导,即“用一种方法,最好是只有一种方法来做一件事”,这与Perl语言代表的“不止一种方法去做一件事”的风格形成鲜明对比。在设计语言时,Python开发者通常会选择明确且歧义较少的语法。

吉多·范罗苏姆认为ABC语言虽然优美且强大,但由于其不开放的设计而未能获得成功。因此,他将Python设计为可扩展的语言。Python并不将所有特性和功能集成到语言核心,而是提供丰富的API和工具,使程序员能够轻松地使用Python、C语言、Cython编写扩展模块。Python还通过外界函数接口(如标准库中的ctypes)提供C语言兼容数据类型,并访问动态链接库或共享库中的函数,实现与其他语言编写的程序的集成和封装。

在Python的官方实现CPython中,通常避免对不成熟或非关键部分进行加速优化。在需要对运行速度进行极致优化的情况下,可以使用具有即时编译(JIT)技术的Python实现或安装JIT扩展模块。

程序代码实例


一个在标准输出设备上输出Hello World的简单编程,这种编程通常作为开始学习编程语言时的第一个编程,可将如下代码录入纯文本文件并随意命名比如program01.py,然后执行这个程序python3 program01.py

print("Hello, world!")

Python也可以单步解释执行。执行Python解释器进入交互式命令行的环境,你可以在提示符号»>旁输入print(“Hello, world!”),按Enter键输出结果:

>>> print('Hello, world!')
Hello, world!

计算正数的阶乘的程序代码:

n = int(input('输入一个整数,就会输出其阶乘:'))
if n < 0:
    raise ValueError('错误,请输入一个非负整数')
fact = 1
for i in range(2, n + 1):
    fact *= i
print(fact)

注意,在Python 3.0及以上版本中,print是个函数,需要在要打印的字符串前后加上圆括号;在Python 2.6以下版本中,print是一个关键字和命令而不加圆括号。

相关网站


官网