Python

关于与「Python」標題相近或相同的条目，請見「Python (消歧义)」。

Python

编程范型| 多范型：过程式、结构化、模块化、反射式、面向对象、函数式
設計者| 吉多·范罗苏姆
實作者| Python软件基金会
发行时间| 1991年，​34年前​（1991）[1]
当前版本|

* 3.14.0rc1（2025年7月22日；最终测试版本）[2][3]
* 3.13.6（2025年8月6日；穩定版本）[4]

型態系統| 鸭子类型[5]、动态、强类型[6]、渐进（英语：gradual typing）（自从3.5）[7]
操作系统| 跨平臺[8]
許可證| Python软件基金会许可证
文件扩展名| .py、.pyi、.pyc、.pyd、.pyo（3.5之前）[9]、.pyw、.pyz（自从3.5）[10]
網站| www.python.org
主要實作產品
CPython、PyPy、Stackless Python、MicroPython、CircuitPython（英语：CircuitPython）、IronPython、Jython
衍生副語言
Cython、RPython
受影响于
ABC[11]、ALGOL 68[12]、APL[13]、C[14]、C++[15]、CLU[16]、Dylan[17]、Haskell[18]、Icon[19]、Java[20]、Lisp[21]、Modula-3[15]、Perl[22]、Standard ML[13]
影響語言
Boo[23]、Cobra（英语：Cobra (programming language)）[24]、CoffeeScript[25]、D、F#、GDScript[26]、Genie、Go[27]、Groovy[28]、JavaScript[29][30]、Julia[31]、Kotlin[32]、Mojo[33]、Nim[34]、Ruby[35]、Starlark（英语：Bazel (software)#Starlark language）[36]、Swift[37]

* 維基教科書中有關zh:Python的文本

Python（英語發音：/ˈpaɪθən/；英語發音：/ˈpaɪθɑːn/），是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范型，包括结构化、过程式、反射式、面向对象和函数式编程。它拥有动态类型系统和垃圾回收功能，能够自动管理内存使用，并且其本身拥有一个巨大而广泛的标准库。它的语言结构以及面向对象的方法，旨在帮助程序员为小型的和大型的项目编写逻辑清晰的代码。

吉多·范罗苏姆于1980年代后期开始研发Python，作为ABC语言的后继者[19]，它也可以被视为采用了叫做M-表达式（英语：M-expression）的中缀表示法的一种LISP方言[38]。吉多·范罗苏姆于1991年首次发布 Python 0.9.0[39]。Python 2.0于2000 年发布并引入了新功能。Python 3.0于2008年发布，它是该语言的主要修订版，并非完全向后兼容。Python 2于2020年随2.7.18版停止支持[40]。

Python的设计哲学，强调代码的可读性和简洁的语法，尤其是使用空格缩进来划分代码块。相比於C语言或Java，Python让开发者能够用更少的代码表达想法。

Python解释器本身几乎可以在所有的操作系统中运行，它的官方直譯器CPython是用C语言编写的。Python是一個由社群驱动的自由软件，目前由Python软件基金会管理。Python是最受欢迎的编程语言之一[41][42][43][44]。

## 歷史

[编辑]

主条目：Python的歷史

Python創始人吉多·范羅蘇姆在2024年PyCon的照片

Python的創始人吉多·范羅蘇姆，在1982年至1995年间，参与了荷兰数学和计算机科学研究学会多个项目的工作[45]。1989年的聖誕節期間，他決心開發一個新的腳本解釋程式，作為ABC語言的後繼者，并且用它替代Unix shell和C语言来进行系统管理[19]，担负与Amoeba操作系统（英语：Amoeba (operating system)）[46]之间的交互操作并进行例外处理[11]。他是BBC電視劇《Monty Python的飛行馬戲團》的爱好者，所以选取了Python作为这个编程语言的名字[47]。范羅蘇姆作为Python的主要開發者，独自担负这个项目的发展决策者职责，直到2018年7月12日，他宣布从終身仁慈獨裁者（BDFL）的职位上“永久休假”[48][49]。他参与了2019年第一届领导项目发展的五人掌控委员会[50][51]。

在1991年2月，范羅蘇姆在Usenet新闻组alt.sources上发布了最初代码（标记为版本0.9.0）[1]，这时就已经存在了带继承的类、例外处理、函数和核心类型`list`、`dict`、`str`等。在这个最初发行中就有了从Modula-3引进的模块系统[52]，和例外处理机制[11]。在1994年1月，Python版本1.0发布[53]，其主要新特征是由Amrit Prem提供的函数式编程工具`lambda`、`map`、`filter`和`reduce`[54]。受Modula-3启发，Python 1.1介入了参数缺省值，Python 1.3介入了关键字参数。Python 1.4介入了对复数的内建支持[55]。

在2000年10月，Python 2.0發布，它从函数式编程语言Haskell中引进了列表推导式[56]。Python 2.1支持了静态嵌套作用域[57]。Python 2.2进行了重大革新，将Python中用C语言写成的类型，和用Python语言写成的类，统一成在同一个层级中，使得Python的对象模型成为纯粹而一致的对象模型[58]；还介入了迭代器[59]，受CLU和Icon启发的生成器[60]，和描述器协议[61]。Python 2.3介入了从Dylan引进的方法决定次序[17]。Python 2.4介入了集合（英语：Set (abstract data type)）类型，和函数修饰器[62]。Python 2.5在官方实现中介入了抽象语法树[63]。

在2008年12月，Python 3.0發布，它对语言做了较大修订而不能完全后向兼容[64]，尽管提供了进行自动转换的`2to3`实用工具，仍有大量现存代码不能移植，故而Python 2.7的产品寿命结束延期至2020年元旦。Python 3.4介入了异步I/O模块[65]。Python 3.5介入了类型提示[66]，和采用async/await语法的协程[67]。Python 3.8介入了赋值表达式[68][69]。

在2020年10月，Python 3.9介入了内建的针对容器类的泛化别名（`types.GenericAlias`）类型[70]，并在官方实现中介入了新的语法解析器[71]。Python 3.10介入了从Haskell和OCaml等借鉴来的结构式模式匹配[72]，和内建的联合类型（`types.UnionType`）[73]。Python 3.11对官方实现进行了优化提速[74]。Python 3.12介入了类型参数语法[75]，并废弃或移除了一些过时的模块和功能。

在2024年10月，Python 3.13介入了从PyPy引进的新交互式解释器，并实验性的支持了即时编译器[76]。Python 3.14正式支持了自由线程Python的官方实现建造选项[77]。

每个版本首次发行后，享有2年的完全支持，随后是3年的安全支持。当前只有Python 3的稳定版本3.12与3.13正在被完全支持，但仍提供对3.9、3.10和3.11版本的安全性修正[78]。

在2024年12月，活跃的Python核心开发者，选举Pablo Galindo Salgado、Barry Warsaw、Emily Morehouse、Gregory P. Smith和Donghee Na，为2025年度掌控委员会的五位成员来领导这个项目[79]。

## 特徵與設計哲學

[编辑]

Python是多范型编程语言。它完全支持结构化编程和面向对象编程，还有很多特征支持函数式编程和元编程比如元对象协议（元类和魔术方法[80]）。通过扩展还可以支持很多范型，包括面向方面编程[81]、契约式设计[82]和逻辑编程[83]。

Python使用动态类型，在内存管理上采用的垃圾回收器基于了引用计数[84]，并且结合了检测环引用的分代垃圾回收优化[85]。它的特征还有动态名字解析（后期绑定（英语：late binding）），即在程序执行期间绑定方法和变量的名字。

Python對遵循LISP傳統的函数式编程提供了有限的支持[86]，它提供了 `map`、`filter`和`reduce`函数[87]；列表推导式、字典推导式、集合（英语：Set (abstract data type)）推导式和生成器表达式。標準庫中的模組`functools`和`itertools`，实现了从Haskell和Standard ML借鉴来的函數式工具[88]。

Python的設計理念是“優雅”、“明確”、“簡單”，它的一些重要準則被合稱為「Python之禅」。在Python解釋器内運行`import this`可以獲得完整的列表，下面举出其中首要：

* 優美优于丑陋。明瞭优于隐晦。
* 简单优于复杂。复杂优于凌乱。
* 扁平优于嵌套。稀疏优于稠密。
* 可读性很重要。

Python開發者的方法论是“用一種方法，最好是只有一種方法來做一件事”，显著不同于以Perl语言为代表的“不止一种方法去做一件事”風格。Python開發者在設計語言時，如果面臨多種選擇，一般會選擇明確没有或者很少有歧義的語法。

范羅蘇姆将Python本身設計為可擴充的[89]，並不把所有的特性和功能都集成到語言核心，而是提供了豐富的API和工具，以便程式設計師能够輕鬆地使用Python、C语言、Cython來編寫擴充模組。Python还可以通过外界函数接口（英语：Foreign function interface）如标准库中的ctypes等，来提供C语言兼容数据类型，并访问动态链接库或共享库中的函数[90]，从而对用其他語言編寫的程式進行集成和封裝。

在Python的官方实现CPython中，一般避開不成熟的或者對非重要部位的加快運行速度的優化。在某些對運行速度要求很高的情況，可以使用具备JIT技术的Python实现或安装JIT扩展模块[91]。

## 語法和语义

[编辑]

主条目：Python語法及語義

Python為了讓程式碼具備高度的可閱讀性，在設計時盡量使用了其它語言常用的符號和英文單字。

### 行结构

[编辑]

Python程序在词法分析上被分成若干逻辑行。简单语句包含在一个单一的逻辑行之内，Python支持使用分号作为分隔符，将多个简单语句合并入一个逻辑行之中[92]。

注释开始于并非字符串文字（英语：string literal）一部份的一个井号`#`，并结束于物理行结尾；注释标示逻辑行的结束，除非已受制于隐式行接续规则；注释在语法上被忽略[93]。

Python支持使用反斜杠作为行接续符，将多个物理行合成为一个逻辑行[94]。在圆括号、方括号或花括号之中的表达式，可以分裂跨越多于一个物理行而不使用反斜杠，这被称为“隐式行接续”[94]。

### 縮排

[编辑]

Python语法中的复合语句，包含了一些其他语句，它们以某种方式影响或控制这些其他语句的执行。Python的复合语句包含一个或多个子句（clause），子句构成自一个头部（header）和一个套件（suite）。特定复合语句的子句头部都在同样的缩排层级上，每个子句头部开始于一个唯一标识关键字，并结束于一个冒号。套件即语法意义上的块，是这个子句所控制的一组语句。

套件有两种形式：可以是与头部在同一行上的一个或多个由分号分隔的简单语句，它们跟随在这个头部的冒号之后；或者是遵循越位規則的在连续诸行上的一个或多个縮排的语句，只有这种套件形式可以包含嵌套的复合语句[95]。[a]

根據PEP 8的規定[96]，使用4個空格來表示每級縮排。[b] 缩排层级的变迁，被用来生成语法解析器才能见到的`INDENT`和`DEDENT`记号[98]，增加縮排就生成`INDENT`记号，減少縮排就生成`DEDENT`记号。二者的作用相当于C语言家族的花括号，或Pascal语言家族的关键字`begin`和`end`。

### 关键字

[编辑]

Python有如下35个关键字；它们不能用作标识符[99]：

* `and`
* `as`
* `assert`
* `async`
* `await`

* `break`
* `class`
* `continue`
* `def`
* `del`

* `elif`
* `else`
* `except`
* `False`
* `finally`

* `for`
* `from`
* `global`
* `if`
* `import`

* `in`
* `is`
* `lambda`
* `None`
* `nonlocal`

* `not`
* `or`
* `pass`
* `raise`
* `return`

* `True`
* `try`
* `while`
* `with`
* `yield`

|
|
|
|
|
|

内建常量`True`、`False`和`None`于Python版本3.0中成为关键字，关键字`nonlocal`介入于版本3.0[100]，关键字`async`和`await`介入于版本3.5[101]，并在版本3.7中成为正式关键字[102]。

在Python中，将只在特定上下文中保留的标识符，称为“软关键字”[103]：

* `match`、`case`和通配符`_`，介入于版本3.10，它们在与模式匹配语句有关的上下文中，可以在语法上充当关键字；但是这种区分只在语法解析器层次进行，并非在词法分析记号化层次。
* `type`，介入于版本3.12，它用在`type`语句之中。

### 标识符

[编辑]

标识符就是名字，在ASCII范围内（U+0001..U+007F），可用于标识符的字符为：大写字母`A`至`Z`和小写字母`a`至`z`，下划线`_`以及数字`0`至`9`，但首字不可以用数字。如下命名约定[104]，是为“保留标识符类”[105]：

* `_spam`（单下划线开头）：弱“内部使用”标识。对于`from M import *`，将不导入所有以下划线开头的对象。
* `spam_`（单下划线结尾）：为了避免与python关键字的命名冲突。
* `__spam`（双下划线开头）：在命名一个类特性的时候，采用名字修饰，比如在类`SpamEggs`内，`__spam`将变成`_SpamEggs__spam`[106]。
* `__spam__`（双下划线开头双下划线结尾）：指那些包含在用户控制的命名空间中的“魔术”方法或特性，比如`__delattr__`、`__dir__`、`__doc__`、`__getattribute__`[107]、`__init__`、`__new__`、`__repr__`、`__setattr__`、`__sizeof__`等。建议永远不要将这样的命名方式应用于自己的变量或函数。

### 語句

[编辑]

Python的语句包括简单语句：

* 赋值语句，采用的中缀记号是等号`=`。赋值语句被用来将名字绑定（含重新绑定）到值，以及用来修改可变对象的特性或项目。赋值语句支持链式赋值。
* Python还支持增广赋值语句[108]，将一个二元运算和一个赋值语句合并成一个单一语句，例如`x += 1`。
* Python支持“序列解包”[109]：在等号左侧可以是一个表达式列表，其中每个表达式都可求值成能被赋值的东西；在等号右侧相应的是一个“可迭代”对象，它在被迭代时产生的值的数量，同于左手侧可写表达式的数量；赋值语句对这个对象进行迭代，将产生的每个值分别赋值给左侧对应的可赋值者。在等号右侧直接包装出序列解包所要求的元组，就形成了并行赋值。[c]
* 表达式（英语：Expression (computer science)）语句，用来交互式的计算并写出一个值，或者用来调用一个过程（即返回无含义结果的函数），在Python中过程返回值`None`。
* `global`语句，是在整个当前代码块中成立的声明，它意味着随后列出的标识符被解释为全局变量。
* `nonlocal`语句，导致随后列出的标识符，提及在除了全局作用域之外的最近包围作用域中的先前绑定变量。
* `del`语句，递归的进行删除。
* `type`语句，声明作为类型别名类型（`typing.TypeAliasType`）的实例的一个类型别名。
* `pass`語句，充当无操作指令，表示此行為空，不執行任何操作。
* `assert`語句，用於程式調適階段時測試執行條件是否滿足。
* `continue`语句，越过这次迭代并继续进行下个项目。
* `break`语句，从循环中跳出。
* `raise`语句，抛出一个例外。
* `return`语句，用来从函数返回值。当函数执行到`return`语句时，它会停止执行并将指定的值返回给调用者。
* `yield`语句，用来从一个生成器中返回一个值[110]，`yield`语句在语义上等价于加圆括号的`yield`表达式[111]，在函数主体中使用`yield`表达式将导致它成为生成器函数。[d]
* 通过生成器的`send()`方法传入的信息，就是其中`yield`表达式的返回值。[e]
* 自从版本3.3，介入了`yield from`语句，它在语义上等价于加圆括号的`yield from`表达式，含有此表达式的生成器函数将特定任务委托给另一个子生成器函数，将传入信息递送给它并直接回传它产生的值[113]。
* 自从版本3.6，在协程函数主体中使用`yield`表达式将导致它成为异步生成器函数[114]。
* `import`语句，导入一个模块或包，它组合了两种操作，查找指名的模块，接着将找到的结果绑定到在局部作用域中的名字。导入语句有三种形式（下述语句样本采用了EBNF，这里的方括号表示其中内容为可选的）：
* `import 模块名字 [as 别名]`，找到一个模块，装载它，如果有需要的话初始化它；在这个导入语句出现的作用域的局部名字空间中，定义一个名字或一些名字[115]。
* `from 模块名字 import 定义1 [as 别名1], 定义2 [as 别名2], …`，找到、装载、必需时初始化一个模块；接着在局部名字空间中，增加到找到指名特性的引用[115]。
* `from 模块名字 import *`，在导入语句出现的作用域的局部名字空间中，绑定模块中定义的所有公开的名字[116]。

复合语句：

* `if`語句，當條件成立時執行語句套件。它經常包含`elif`、`else`子句。
* `while`語句，當條件為真時，重複執行語句套件。
* `for`語句，遍历列表、字符串、字典、集合等迭代器，依次處理迭代器中的每個元素。
* `match`语句，用于模式匹配。
* `class`語句，是定义类的可执行语句。[f]
* `def`語句，是定義函數和方法的可执行语句。[g]
* `async def`语句，用于协程函数定义。`await`表达式、`async for`语句和`async with`语句，只能用在协程函数的主体中。[h]
* `try（英语：Exception handling syntax）`語句，它经常包含`except`、`else`、`finally`子句，處理在程式執行中出现的例外情況。Python 3.11介入了`except*`子句[117]。Python支持并广泛使用EAFP（请求原谅比获得许可更容易）风格的例外处理，作为检测错误状况和程序中其他“例外”事件的方式。例如：在访问一个文件或资源之时，事先不进行测试就尝试使用它，事后再捕获可能的访问失败所引发的例外。[i]
* `with`語句，把一块代码包裹在一个上下文管理器之内。它允许了RAII（对象初始化时获取资源）方式的行为，可替代常见的`try`/`finally`惯用法（英语：Programming idiom）。Python使用`with`语句处理资源[118]，例如：在执行一块代码时，事先获取一个锁，并且事后释放这个锁；或事先打开一个文件，并且事后关闭这个文件。[j]

### 块与模块

[编辑]

在Python的执行（英语：Execution (computing)）模型中，程序构造自块（也称为代码块）。块是作为一个单元执行的Python程序文本，模块、函数主体和类定义都是块。交互式键入的每个命令、脚本文件和脚本命令都是块。传递给内建函数`eval()`和`exec()`执行的字符串是块。块在执行框架（frame）中执行。框架包含一些用于调试的管理信息，并确定在这个块执行完成后，执行在何处以及如何继续。

模块是包含Python定义和语句的一个文件，这个文件名字是模块名字附加上后缀`.py`；在一个模块中，模块的名字（作为字符串）可获得为全局变量`__name__`的值[116]。包（package）是可以包含子模块或递归性的子包的模块。包在技术上是具有`__path__`特性的Python模块。可以将包视为文件系统上的目录，而将模块视为这种目录中的文件，但是包和模块不必然源自文件系统[119]。

名字即标识符，是通用的引用持有者，它不关联于一个固定的数据类型，但是，一个名字在给定时间，总是被绑定到有一个类型的某个对象上，这就是动态类型的特征。名字的存储位置不“包含”所指示的值，一个共同的值可以赋值给多个名字，一个名字在任何时候，都可以重新绑定到各种不同类型的对象上，包括字符串、过程、具有数据和方法的复杂对象等。

如果一个名字绑定在一个块中，它是这个块的局部变量，除非被声明为`nonlocal`或`global`。如果一个名字绑定在模块层次，它是全局变量。模块对应的块的变量，既是局部的也是全局的。如果一个变量使用在一个块中，却不定义在这里，它是自由变量[120]。[k]

在Python中，赋值所进行的操作，是将一个名字绑定为到一个分立的动态分配的对象的一个引用。[l] 作用域定义一个名字在一个块中的可见性。如果一个局部变量被定义在一个块中，它的作用域包括这个块。如果这个定义出现在一个函数块中，作用域扩展到在所界定作用域内包含的任何块，除非所包含的块为这个名字介入了不同的绑定。对一个块可见的所有这种作用域的集合，叫做这个这个块的“环境”[120]。[m]

当一个名字在一个块之中使用，它采用最近包围作用域来解析。如果一个名字绑定在一个块中，并且在其中于绑定之前就被使用，会导致一个错误。[n]当一个函数或类的定义被嵌套到其他函数的定义之内，它的非局部作用域就是这个包围函数的局部作用域。`nonlocal`语句导致其列出的标识符，提及在非局部作用域内先前绑定的名字（即非局部变量（英语：Non-local variable））[120]。[o]

名字空间是存储变量的地方，它被实现为字典。有局部名字空间、全局空间即包含这个块对应的模块的名字空间，和内建名字空间即模块`builtins`的名字空间；对象的方法是定义在类主体内的函数，它有着嵌套的名字空间。名字空间通过防止命名冲突而支持了模块性，还通过明晰了哪个模块实现了哪个函数而增进可读性和可维护性。

如果`global`语句出现在一个块之中，在这个语句中指定的所有名字，提及在顶层名字空间中这些名字的绑定。名字在顶层名字空间解析，首先查找全局名字空间，未果查找内建名字空间。`global`语句与在同一个块中的名字绑定运算有同样的作用域。如果一个自由变量的最近包围作用域包含针对它的`global`语句，这个自由变量被当作全局的[120]。[p]

### 表达式

[编辑]

Python的表达式（英语：Expression (computer science)）主要包括如下：

* 在Python中，表达式的最基本元素被称为原子，最简单的原子是文字（英语：Literal (computer programming)）或标识符。由逗号`,`分隔的一系列表达式，叫做表达式列表。

* 在Python中，加圆括号（parenthesized）形式被归类为原子，它是包围在圆括号中的可选的表达式列表。加圆括号的表达式列表产生的东西，就是这个表达式列表所产生的：如果这个列表包含至少一个逗号，例如`(a,b,c)`，则它产生一个元组；否则它产生的就是这个单一表达式，例如`(a)`产生`a`[123]。要表示仅有单个元素的元组，需要给这个元素后缀一个逗号，例如`(a,)`。空的圆括号产生空元组对象。元组不是圆括号形成的，而是使用逗号形成的，在没有歧义的情况下，元组的圆括号是可选的。

* Python提供了称为展示（display）的特殊语法来构造列表、字典或集合（英语：Set (abstract data type)），展示被归类为原子，并且有两种方式：要么其所包容的元素是显式的列举出来的，要么它们是通过叫做“推导式”的特定循环和过滤指令运算出来的。列表展示，是包围在方括号中的可以为空的一系列表达式，例如`[a,b,c]`。字典展示，是包围在花括号中的可能为空的一系列的用冒号`:`分隔的键-值对。集合（英语：Set (abstract data type)）展示，是包围在花括号中的一系列表达式[124]。[q]

* Python支持列表推导式和更一般性的生成器表达式[125]，Python 3.0增补了字典推导式和集合推导式。[r]自从Python 3.5，介入了在表达式列表中的“可迭代解包”`*`，和在字典展示中的“字典解包”`**`[126]。[s]

* Python对容器类实例，比如序列类型的列表、元组或字符串，支持形如`a[索引]`的下标，和形如`a[开始:停止]`或`a[开始:停止:步长]`的分片（英语：array slicing）。此二者与函数调用和特性引用，一起被归类为表示语言中最紧密运算绑定的初等项（primary）。这里的下标索引是基于零的，负数是相对于结尾的。分片范围自从开始索引，直到但不包括停止索引，分片的第三个步长参数，允许元素被跳过和用负数指示反向。分片的每个元素都是浅层复制（英语：Object copying）的。分片索引可以省略，例如`a[:]`，这返回整个列表的一个复本。[t]

* 在Python中，算术运算的加法`+`、减法`-`、乘法`*`，与C语言和java相同的。除法和模除`%`的行为有所不同，在Python中有两种除法：除法`/`和下取整除法`//`。Python增加了指数算符`**`。自从Python 3.5，介入了矩阵乘法算符`@`[127]，它已经用于了NumPy库[128]。中缀算符`+`、`-`，还可以分别表示取原数和取相反数的一元算符。

* 在Python中，有如下必须用于整数的位运算：AND（与）`&`、OR（或）`|`、NOT（非）`~`、XOR（异或）`^`、右移`>>`、左移`<<`。

* 在Python中，有如下比较运算：大于`>`、小于`<`、大于等于 `>=`、小于等于`<=`、等于`==`、不等于`!=`，用来比较两个对象的值的大小。Python有同一性测试算符：`is`、`is not`，用来比较两个运算元是否引用了同一个对象；还有成员关系测试算符：`in`、`not in`，用于判断一个对象是否属于另外一个对象。Python允许由比较运算链接起来的布尔表达式[129]，比如`a < b < c`，它测试`a < b and b < c`；C语言将它解析为`(a < b) < c`：即首先求值`a < b`得出结果`0`或`1`，接着将此结果比较于`c`[130]。

* Python使用`and`、`or`、`not`表示逻辑运算与、或、非，不采用C语言和Java中所用的符号`&&`、`||`、`!`。

* Python的条件表达式表示为`x if c else y`。意思是当`c`为真时，表达式的值为`x`，否则表达式的值为`y`。 在运算元的次序上不同于很多其他语言中常见的`c ? x : y`。

* Python的`lambda`表达式是匿名函数，其函数体只能是一个表达式。[u]

* 自从Python 3.8，介入了赋值表达式，其记号是`:=`[68]。它将一个表达式赋值给一个标识符，同时还返回这个表达式的值。[v]

Python中运算符具有优先级，下表中的运算符按照从最高（最先绑定）到最低（最后绑定）的次序列出。在相同单元格中运算符具有相同的优先级，它们从左至右结合，除了指数表达式和条件表达式从右至左结合之外[133]：

运算符 | 描述

|

`(表达式 …)`，`[表达式 …]`，`{键: 值 …}`，`{表达式 …}` | 绑定或加圆括号表达式，列表展示，字典展示，集合展示
`x[索引]`，`x[索引:索引]`，`x(参数 …)`，`x.特性` | 下标，分片，调用，特性引用
`await x` | `await`表达式
`**` | 指数
`+x`，`-x`，`~x` | 取原数，相反数，逐位NOT
`*`，`@`，`/`，`//`，`%` | 乘法，矩阵乘法，除法，下取整除法，余数
`+`，`-` | 加法和减法
`<<`，`>>` | 移位
`&` | 逐位AND
`^` | 逐位XOR
`|` | 逐位OR
`in`，`not in`，`is`，`is not`，`<`，`<=`，`>`，`>=`，`!=`，`==` | 包含成员关系测试，同一测试，各种比较
`not x` | 布尔NOT
`and` | 布尔AND
`or` | 布尔OR
`… if … else …` | 条件表达式
`lambda` | `lambda`表达式
`:=` | 赋值表达式

Python为序列提供了串接算符`+`和倍增算符`*`[134]。自从Python 3.9，介入了字典归并算符`|`和字典更新算符`|=`[135]。

Python为集合（英语：Set (abstract data type)）提供了集合论运算：并集`|`、交集`&`、相对补集`-`、对称差`^`，和子集测试`<=`、真子集测试`<`、超集测试`>=`、真超集测试`>`。

在Python中，语句不能成为表达式的一部份，表达式比如列表推导式和字典推导式以及`lambda`表达式，都不能包含语句。这个限制的一个示例：赋值语句比如`a = 1`，不能用作条件语句的条件判断表达式的一部份；这能够避免C语言编程中的一个常见错误，即在条件判断时把等于算符`==`误写为赋值算符`=`，这不是预期代码却在语法上有效而能通过C语言编译器检查，在Python中这会导致一个语法错误。

#### 数值运算

[编辑]

Python的二元算术运算，先将两运算元转为共同类型，加法、减法、乘法、下取整除法、模除和指数运算的结果也采用此类型，举下取整除法`//`例子：`5//2 == 2`而`5.0//2 == 2.0`。自从Python 3.0，除法`/`总是产生浮点数结果，例如`5/2 == 2.5`。

下取整除法`//`的修约是朝向负无穷的，这意味着等式`(a + n)//n == a//n + 1`永远成立；很多其它编程语言比如C99采用截尾取整规则，其整数除法不能保证这个等式永远成立。Python提供了`round()`内建函数，用于把一个浮点数修约成最近的整数[136]，自从Python 3.0，为了打破平局它采用了IEEE 754的约半成偶规则，例如`round(1.5) == 2 == round(2.5)`。

模除`%`同样采用下取整规则，它所得余数的符号同于除数，例如`-5%2 == 1`而`5%-2 == -1`。很多其它语言采用截尾取整规则，其模除所得余数的符号同于被除数。Python模除运算结果余数的定义，确使等式`a == (a//n)*n + a%n`对于`a`和`n`分别为正数或负数的情况均为成立[137]；数学中的欧几里得除法，同样保证这个等式永远成立，但它的余数总是非负数。

Python对所有整数运算，使用任意精度算术。在`decimal`模块中的`Decimal`类[138]，提供十进制浮点数（英语：Decimal floating point），具有用户可按需要而更改的缺省28个十进制有效数位精度，并有多种修约方式[139]。在`fractions`模块中的`Fraction`类，提供任意精度的有理数[140]。第三方库gmpy2[141]，提供了到任意精度计算库GMP/MPIR（英语：MPIR (mathematics software)）、MPFR（英语：GNU MPFR）和MPC的接口。

除了求绝对值函数`abs()`列入内建函数之外，大多数数学函数，处于`math`和`cmath`模块内。前者用于实数运算，而后者用于复数运算。Python有着广泛的数学库，特别是第三方库NumPy进一步扩展了固有能力。

#### 字符串操作

[编辑]

Python的文本序列类型，包括字符串`str`和字节序列`bytes`与`bytearray`。文本序列的文字有多种写法：

* 短字符串文字（英语：string literal），由单引号`'`或双引号`"`界定。不同于Unix shell、Perl和受Perl影响的语言，单引号和双引号功能相同。这二种字符串都使用反斜杠`\`作为转义字符。

* 长字符串文字，是开始并结束于三个单引号`'''`或三个双引号`"""`的序列。它们可以跨越多行，其功能就像shell、Perl和Ruby中的here文档。

* 字节文字（英语：Literal (computer programming)）总是前缀上一个`b`或`B`，它产生`bytes`类型的实例。它们只可以包含ASCII字符，其数值大于等于`128`的字节必须通过转义来表达。

* 字符串文字或字节文字都可选的能前缀上一个`r`或`R`，这叫做原始字符串（英语：String literal#Raw strings）。转义序列不被解释，因此在文字反斜杠常见的地方很有用，比如正则表达式和Windows风格的路径。

* Python允许多个毗邻的字符串文字或字节文字（它们以空白分界并可以使用不同的引述约定），在编译时间于语法层面上串接起来。要在运行时间串接字符串，必须使用序列串接算符`+`[142]。

自从Python 3.0，字符串类`str`提供了格式化（英语：Content format）方法`format()`[143]，例如`"spam={0} eggs={1:04d}".format("blah", 2)`，它求值为`'spam=blah eggs=0002'`。格式化方法被推荐用来替代早先的字符串对象内建格式化算符`%`，它在功能上类同于C语言中的`printf`格式化字符串[144]，例如`"spam=%s eggs=d" % ("blah", 2)`。

自从Python 3.6，介入了字符串插值（英语：String interpolation）[145]，即“格式化字符串文字”或称为“f字符串”，它向字符串文字前缀上`f`或`F`[146]，例如`x="blah"; y=2; f'spam={x} eggs={y:04d}'`。

### 类型

[编辑]

Python 3的标准类型层级[147]

Python使用鸭子类型，并拥有有类型的对象，和无类型的变量名字。在编译期不检查类型约束，而宁愿在一个对象上的操作出现可能的失败，表现出这个给定对象不具有适合的类型。尽管是动态类型系统，Python却是强类型的，禁止没有明确定义的操作，比如将一个数和一个字符串相加，而不是默默的去尝试转换使其有意义。

Python有着范围广泛的基本数据类型。同时具备常规的整数和浮点算术，它透明的支持任意精度算术、复数和十进制浮点数（英语：Decimal floating point）。Python支持种类繁多的字符串操作。在Python中，字符串是不可变的，所以在其他编程语言中可能就地改变字符串的字符串操作，比如字符替换，在Python中返回新的字符串。

Python有一个非常有用特征，就是搜集（或称容器）类型的概念。一般的说，搜集是以一种易于引用或索引的方式，包含其他对象的对象。Python的搜集类型包括了序列、映射和集合，Python提供了广泛的搜集操纵能力，比如内建包含检查和通用迭代器协议。

列表（动态数组）、元组和字符串是序列类型。所有序列类型都有位置索引，并且除了字符串，都可以包含任意类型的对象，在同一个序列中可以包括多种类型的对象。字符串和元组是不可变的，使得它们成为字典的键的完美候选者。列表是可变的，元素可以被插入、删除、修改、添加或就地排序。

字典是无次序的映射类型，它将一组不可变的键，映射到相应的元素上。在字典中的键，必须是不可变的Python类型，比如整数或字符串，因为在底层它们是通过散列函数实现的。集合（英语：Set (abstract data type)）是无次序的类型，它包含唯一性的不可变对象作为元素。有二种类型的集合：可变的`set`和不可变的`frozenset`。

Python允许编程者使用类，定义自己的类型[58]。类的新实例，是通过调用这个类的构造器而创建的，而类型和类都是元类`type`的实例，元类`type`更是其自身的实例，这允许了元编程和反射。Python支持对类型和类的广泛内省，它们可以被读取和比较。[w]

长期规划是支持渐进类型（英语：gradual typing）[7]，并且自从Python 3.5，语言的语法允许指定静态类型，但在缺省实现CPython中不检查它们[148]。静态类型检查器mypy，支持编译期类型检查[149]。

Python 3内建类型举要  类型  | 可变性 | 描述  | 语法例子

|
|
|

`bool` | 不可变  | 布尔值，有表示值`False`和`True`的两个对象。作为整数类型的子类型，除了在转换成字符串时转换为`"False"`和`"True"`之外，它们在几乎所有上下文中表现得如同`0`和`1`。  | `True`
`False`
`int` | 不可变  | 整数，其大小在理论上无限制，实际上受限于内存[150]。  | `42`
`float` | 不可变  | 双精度浮点数，确切精度依赖于机器。一般实现为IEEE 754标准binary64浮点数，它有53个二进制有效数位精度[151]。  | `1.414`
`complex` | 不可变  | 複數，即分别表示实部与虚部的两个双精度浮点数的有序对。  | `3+2.7j`
`range` | 不可变  | 数的序列，通常用在`for`循环中指定循环次数[152]。  | `range(1, 10)`
`range(10, -5, -2)`
`str` | 不可变  | 字符串，即Unicode代码点序列[153]。其代码点都在区间`[\u0000, \uffff]`或`[\U00010000, \U0010ffff]之内。 ` | `'Wiki' "pedia"`

"""Spanning
multiple lines"""

`bytes` | 不可变  | 字节序列，其项目是8位字节，可以用区间`[0x00, 0xff]`的整数表示。  | `b'Wiki' b"pedia"`
`bytes([0x68, 0x65, 0x78])`
`bytearray` | 可变  | `bytearray(b'Wiki' b"pedia")`
`bytearray([0x68, 0x65, 0x78])`
`list` | 可变  | 列表，可以包含任意的Python对象。  | `[4.0, 'string', True]`
`[]`
`tuple` | 不可变  | 元组，可以包含任意的Python对象。  | `(4.0, 'string', True)`
`()`
`dict` | 可变  | 字典是键-值对的搜集。键在其生存期间是不可变的（称其为可散列的），列表、字典或其它可变对象和包含它们的对象不可以用作键。  | `{'key1': 1.0, 3: False}`
`{}`
`set` | 可变  | 无序的集合（英语：Set (abstract data type)），包含唯一性的不可变的对象，它们不能用任何下标来索引。  | `{4.0, 'string', True}`
`set()`
`frozenset` | 不可变  | `frozenset([4.0, 'string', True])`
`types.EllipsisType` | 不可变  | 这个类型的值是有一个单一对象，它表示为文字（英语：Literal (computer programming)）`...`或内建名字`Ellipsis`，它的真值为真。它用于NumPy多维阵列索引[154]。  | `...`
`Ellipsis`
`types.NoneType` | 不可变  | 这个类型的值是一个单一对象`None`（相当于其他语言的`Null`）[155]，它被用来指示值的缺席，它的真值为假。  | `None`
`types.NotImplementedType` | 不可变  | 这个类型的值是一个单一对象`NotImplemented`，数值方法和丰富比较方法如果没有实现在所提供运算元上的这个运算则应当返回这个值，它不应该在布尔值上下文中求值。  | `NotImplemented`

除了各种数据类型，Python解释器还内建了很多其他类型，包括可调用类型：用户定义函数、实例方法、生成器函数、协程函数、异步生成器函数、内建函数、内建方法、类、类方法；模块，定制类，类实例，I/O对象（也叫做文件对象），和暴露给用户的一些内部类型：代码对象、框架对象、溯回对象、切片对象、静态方法对象、类方法对象。

### 函数

[编辑]

Python的函数支持闭包[156]，及其他头等函数特征[x]，并支持限制最大深度的递归[y]， 它不支持函数重载。Python的函数作为头等对象，具有和普通对象平等的地位。Python官方实现不提供尾调用优化或头等续体，吉多·范罗苏姆曾声称他不会对其加以支持[157]，有第三方库支持弹跳床（英语：Trampoline (computing)）[158]。

在Python中，函数调用的实际参数与函数定义的形式参数之间的结合，所传递的是“对象引用”，函数在被调用之时，所给予的实际参数被介入到一个局部符号表中，实际参数使用传值调用来传递，而这个值总是对象引用，并非这个对象的值[159]。如果形式参数绑定到一个可变对象，则通过形式参数对此对象内容的修改，在函数外也是可见的。如果形式参数绑定到一个不可变对象，则通过形式参数不能修改此对象内容，但可以把形式参数重新绑定到其它对象上，这并不影响函数外的对象的值。[z]

Python在函数定义时，可以在形式参数序列中，以`形式参数=值`的样式指定形式参数缺省值。在函数调用时可以省略有缺省值的形式参数，这时这个缺省值就被代入到它的位置中。在这个函数定义被执行之时，从左至右的求值作为形式参数的缺省值的这些表达式。这意味着这种表达式在这个函数被定义之后只被求值一次，而每次函数调用之时都使用相同的“预先计算”的值。[aa]

Python在函数调用中，可以给予位置实际参数和关键字实际参数。实际参数可以如同C语言那样，按照位置与函数定义的形式参数匹配；也可以采用关键字实际参数，即`形式参数=值`样式的实际参数。Python在函数定义中，可以使用不对应实际参数的特殊形式参数`/`和`*`，将形式参数序列分为三部份：唯位置形式参数、可位置可关键字形式参数和唯关键字形式参数。如果一个形式参数有缺省值，则在其后直到`*`之前的所有形式参数也都必须有缺省值。[ab]

在函数定义中的位置形式参数序列和关键字形式参数序列，可以分别在其末尾有`*args`或`**kwargs`这样的加了前缀`*`或`**`的形式参数，它们捕获在函数调用时提供的，超出形式参数序列规定而无所对应的多个实际参数；在形式参数`args`前加`*`号，则`args`是元组类型，它捕获可变数目的位置实际参数；在形式参数`kwargs`前加`**`号，则`kwargs`是字典类型，它捕获可变数目的关键字实际参数。[ac]

在函数调用的实际参数序列中，关键字实际参数必须出现在位置实际参数之后。如果要传递给一个函数的一些位置实际参数，已经在一个序列类型如列表或元组的对象中，则可以在函数调用中给它前缀`*`来进行可迭代解包；如果要传递的一些关键字实际参数已经在字典对象中，则可以给它加`**`号来进行字典解包。

在函数定义头部之后可以插入“文档字符串”，用作函数的使用帮助，它可以使用内置函数`help()`打印出来。自从Python 3.0，函数定义可以对形式参数与返回值增加类型标注[160]。自从Python 3.5，开始支持类型提示[148]。

Python的修饰器（decorator）可用来修改任何可调用Python对象，其用法是将已定义的对象比如函数、方法或类定义传递给修饰器，再将它所返回的修改后的对象绑定到原来对象的名字。修饰器可用于元编程，其用途至少包括：建立类方法或静态方法，设置先决条件和后置条件、实现多方法、记忆化[161]。 Python使用`@`作为关键字形成修饰符，它是用来应用修饰器的语法糖。[ad] 通过在毗连的行上放置多个修饰符，多个修饰器可以链接起来应用。[ae]

### 对象及其方法

[编辑]

Python支持大多数面向对象编程技术。在Python中所有东西都是对象，包括数、函数、类和模块。它允许多态性，不限定于在类层级（英语：Class hierarchy）之内子类型方式，而是采用了鸭子类型方式[5]，就是说针对变量的方法调用和特性（attribute）访问，不事先限制这个的变量的类型，它可被绑定到任何对象。Python的类继承支持多重继承，这可以用来实现混入。Python支持元类[162]，还支持抽象基类[163]，自从Python 3.6，提供了定制化类创建的简单机制[164]。

对象的方法，是附属于这个对象的类的函数。对于正常的方法和函数，语法`实例.方法(实际参数)`，是`类.方法(实例, 实际参数)`的语法糖。Python不提供其他一些面向对象编程语言比如C++和Java中的隐式的`this（英语：this (computer programming)）`关键字[165]，Python的对象方法沿袭自Modula-3，使用显式的第一个形式参数来访问实例特性（英语：Instance variable），习惯上将其命名为`self（英语：this (computer programming)）`。[af]

Python支持一些名字以`__`开始和结束的特殊方法，它们用于实现实现多种特殊功能[80]，尤其是实例初始化，在一个类中定义`__init__()`，它在实例创建后返回给调用者之前被调用，所给予的实际参数就是传递给对象构造器表达式的那些实际参数。某些特殊方法可以实现运算符重载，比如在一个类中定义`__add__()`，将允许在这个类的实例上使用`+`算符。

在Python中，对象的特殊特性`__dict__`，是存储其所有（可写）特性的字典[166]。在一个类中的类变量（英语：Class variable）`__slots__`，可以被赋值为变量名字序列，它为所声明的这些变量在类实例对象中保留空间，并阻止其自动建立`__dict__`[167]。[ag]

在Python中，定义了一个或多个特殊方法`__get__()`、`__set__()`、`__delete__()`的类，可以用作描述器（descriptor）[168]。一个类的类成员若是另一个描述器类的实例，则它被称为这个类的属性（property），使用与特性（attribute）访问相同的语法，访问这个类的实例对象中的属性。[ah]

在Python中，不强制采用访问子与变异子方法，来访问对象的数据成员。Python使用名字修饰，有限的支持私有变量[106]。Python的`property`内建函数和`@property`修饰符，将一个类中特殊定义的访问某个特性的那些方法，包装成的这个类的一个属性[169]。[ai]

Python允许通过使用`@classmethod`和`@staticmethod`修饰符，来分别建立类方法和静态方法[62]。在方法调用之时，类方法接收这个类的作为其隐式的第一个实际参数，而静态方法不接收隐式的第一个实际参数。[aj]

Python不提供隐式的`super`关键字而是提供了`super()`内建函数，在一个类的方法中调用此函数返回一个代理（proxy）对象，它为了在类层级内这个类所有基类中查找实现了特定方法的基类，确定了优先次序即方法决定次序（MRO），次序居前的基类优先于位居其后的它的父辈类或平辈类[170]。当一个子类的方法覆盖了其超类方法的时候，可通过调用`super().方法`，将这个方法调用委托给与子类的`self.方法`同名的超类方法。[ak]

## 标准库

[编辑]

Python拥有一个强大的标准库[171]。Python标准库包括了如下功能：

* 内建函数
* 内建常量
* 内建类型
* 内建例外
* Python运行时服务
* 定制Python解释器
* 导入模块
* Python语言服务
* 文本处理（英语：Text processing）服务
* 二进制数据（英语：Binary data）服务
* 数据类型
* 数值和数学模块
* 函数式编程模块
* 文件和目录访问
* 数据持久化
* 数据压缩和存档
* 文件格式
* 加密服务
* 通用操作系统服务
* MS Windows专有服务
* Unix专有服务
* 命令行界面库
* 并发执行（英语：Execution (computing)）
* 网络和进程间通信
* 互联网数据处理
* 结构式（英语：Structured document）标记处理工具
* 互联网协议及其支持
* 多媒体服务
* 国际化
* 程序框架
* Tk图形用户界面
* 开发工具
* 调试和分析
* 软件打包和发布（英语：Software distribution）

## 程序代码实例

[编辑]

一個在標準輸出設備上輸出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`是一个关键字和命令而不加圆括号。

## 实现

[编辑]

Python是一门跨平台的脚本语言，Python规定了一个Python语法规则，根据该规则可编写Python直譯器[172]。Python属于动态语言，其官方实现CPython将Python程序编译成中间形式的字节码[173]，并接着在它的虚拟机上执行[174]，运行速度缓慢于C/C++所编译出的机器码和在HotSpot JVM上运行的java字节码[175]。

活跃开发的实现

* CPython：官方的Python直譯器，需要区别于其他直譯器的时候才以CPython称呼。CPython默认采用全局解释器锁（GIL），以确保在任何时刻只有一个线程执行Python字节码；一些扩展模块被设计为在进行计算密集任务时释放GIL，还有在进行I/O时总是释放GIL[176]。
* MicroPython：为微控制器而优化的Python 3变体，它实现了完整的Python 3.4语法，和补充自版本3.5的`async/await`关键字，以及后来版本的一些选定特征；它提供了实现Python标准库模块功能子集的内建模块，和特定于微控制器的一些模块。CircuitPython（英语：CircuitPython）是Adafruit（英语：Adafruit Industries）开发的MicroPython分叉。
* PyPy：采用了跟踪JIT（英语：Tracing just-in-time compilation）的Python实现，缺省支持stackless模态[177]，它是用RPython编写的，当前支持Python版本3.11和2.7。
* Numba：使用LLVM JIT的Python优化编译器，它将包括很多NumPy函数的聚焦数值计算的Python子集，翻译成快速的机器码，它为在CPU和GPU上并行化Python代码提供了大量选项。
* Codon：高性能且无运行时开销的Python编译器[178]，它将Python代码编译成本机机器代码，并且支持本机多线程和GPU并行运算，还包括了特征齐全的完全编译的内建NumPy实现。它由MIT CSAIL的研究人员开发[179]，其语义在数据类型等方面上与CPython有所不同[180]。
* Pyodide：基于WebAssembly/Emscripten的用于浏览器和Node.js的Python发布[181]，支持任何在PyPI上`wheel`形式的纯Python包，并且已经移植了很多具有C语言扩展的包。
* RustPython：用Rust编写的Python解释器[182]，它可以嵌入到Rust应用程序中从而将Python用作脚本语言，还可以被编译成WebAssembly从而在浏览器中运行Python代码。
* Brython：用JavaScript编写的在浏览器中运行的Python实现[183]，具有到DOM元素和事件的接口。
* GraalPy：针对JVM的基于GraalVM（英语：GraalVM）的Python高性能实现[184]。

转译成其他语言的编译器

* Cython：将增加了静态类型声明的Python超集编译成C或C++的编译器。Cython补充支持调用C语言函数并且在变量和类特性上声明C语言类型，还支持以OpenMP为后端的本机多线程并行[185]。
* mypyc：将Python模块编译成C扩展的编译器[186]，它使用标准的Python类型提示生成快速代码。mypyc是mypy发行的可选依赖，它使用mypy进行类型检查和类型推论[149]。
* Nuitka（英语：Nuitka）：用Python编写的到C11（或替补为C++03）的编译器[187]，它依赖于CPython的`libpython`库，能完成嵌入所有模块的程序编译、扩展模块及包编译和独立模态程序发布。
* Shed Skin（英语：Shed Skin）：将纯粹但隐含为静态类型的Python有限子集代码转译成优化的C++代码的编译器[188]，它可以生成独立程序或者能导入并用于更大Python程序的扩展模块。
* Pythran：将聚焦于科学计算的Python子集编译成C++11的提前编译器（英语：Ahead-of-time compilation）[189]，它依赖于Boost和xsimd库，将标注了接口描述的Python模块编译为本机共享库模块，能利于上多核和SIMD指令单元。
* Transcrypt：用Python编写的Python 3.9到JavaScript编译器[190]，用于在浏览器中运行Python代码，它被预先编译为高可读性且高效的JavaScript代码。
* MyHDL（英语：MyHDL）：将Python编译成Verilog或VHDL[191]。

其他实现举例：Jython，它是用Java实现的Python 2.7。IronPython，它是建造在DLR之上的Python 2.7和Python 3.4实现。Stackless Python，它是实现微线程（英语：microthread）的CPython 3.8分叉。Pyston，它是具有JIT等性能优化的CPython 3.8.12的分叉[192]。Pyjion，将Python代码编译成本机CIL的CPython 3.10的JIT扩展[193]。Cinder，它是Meta孵化器发布的具有包括JIT等很多优化的CPython 3.10分叉[194]。Grumpy，它是Python 2.7到Go的转译器和运行时系统[195]。py2many，起步于转译至Julia的PyJL的将Python转译成多种语言的转译器[196]。

## 开发环境

[编辑]

### 通用文本编辑器

[编辑]

很多并非集成开发环境软件的文本编辑器，也对Python有不同程度的支持，并且加上专门为Python设计的编辑器插件也会有很高的可用性。

* Visual Studio Code
* Atom
* Eclipse
* emacs
* SlickEdit
* TextMate
* Vim
* Sublime Text
* EditPlus
* UltraEdit
* PSPad
* Notepad++

### 专用开发环境

[编辑]

适用于Python的集成开发环境（IDE）软件，除了标准二进制发布包所附的IDLE之外，还有许多其他选择。其中有些软件设计有语法着色、语法检查、运行调试、自动补全、智能感知等便利功能。由于Python的跨平台出身，这些软件往往也具备各种操作系统的版本或一定的移植性。

* IDLE：Python“标准”IDE，一般随Python而安装，支持较少的编辑功能，调试功能也比较弱。
* Eric：基于PyQt的自由的IDE，支持自动补全、智能感知、自动语法检查、工程管理、svn/mercurial集成、自动单元测试等功能，具有可扩展的插件系统，通过可选插件支持Git集成。调试功能与Visual Studio和Eclipse类似。
* Spyder：开源的跨平台科学计算IDE。
* PyCharm：由JetBrains公司出品，具备一般IDE的功能，比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等，另外，它还提供了一些功能用于Django开发，还支持IronPython。它是商业软件，但也具有社区版和教育版。

## 第三方扩展包

[编辑]

Python Powered

主条目：Python软件列表（英语：List of Python software）

Python社群提供了大量的功能覆盖众多领域的第三方模組，其使用方式与标准库类似。第三方模块可以使用Python/Cython或者C语言编写。软件工具比如SWIG，通过定义接口文件或规定文件的方式，可以将C/C++编写的程序库包装为Python模块。Python解释器本身也可以被集成到其它需要腳本語言的程式内。

Python包索引是公开的软件包在线仓库。pip是官网推荐的以安全方式安装Python应用及其依赖软件包的最流行工具[197]。要安装在整个操作系统范围内共享的Python包，现在需要通过操作系统的软件包管理系统。要将特定于应用的依赖包隔离于共享的Python安装，可以使用标准库的venv[198]或第三方工具virtualenv[199]创建虚拟环境；第三方工具pipenv，能自动为用户项目建立和管理虚拟环境，并在安装/卸装软件包的时候，向此项目的Pipfile文件增加/移除这个软件包[200]。

### 網絡编程

[编辑]

Python标准库對於各种網路協定的支援很完善，因此適用於編寫伺服器軟體、網路爬蟲等Web開發。Python定義了WSGI標準應用接口，来協調HTTP伺服器與基於Python的Web程式之間的溝通。比如，通過mod_wsgi（英语：mod_wsgi）模組，Apache HTTP Server可以運行用Python編寫的Web程式。

用Python编写的一些Web框架，有助於輕鬆地開發和管理複雜的Web程式。重要的第三方网络编程（英语：Computer network programming）库和Web框架有：

* Zope：著名的开源Web应用服务器。
* Beautiful Soup：用作HTML/XML解析器的一个简单易用Python包。
* Twisted：事件驱动的网络编程框架，它支持很多常见的网络协议并包括了很多不同用途的模块，它支持所有主要的系统事件循环和各种GUI事件循环。
* Django：MTV架构[201]的Web框架，它注重组件的重用性和“可插拔性”、快速开发和DRY法则。
* Tornado：使用单线程事件循环的异步非阻塞式web服务器，也是轻量级的Web框架。
* Flask：微Web框架，不要求特定的工具或库。
* Requests：适合于常人使用的HTTP库，封装了许多繁琐的HTTP功能，极大地简化了HTTP请求所需要的代码量。
* aiohttp：基于`asyncio`的HTTP客户端和服务器二者[202]。
* uvloop：对内建`asyncio`事件循环的快速的、直截了当的替代者[203]，它用Cython实现并在底层使用了libuv。
* FastAPI（英语：FastAPI）：用来建造基于HTTP的网络服务API的现代高性能web框架[204]。
* PyScript：创建在浏览器内的Python应用的框架[205]，可采用Pyodide、MicroPython、WebAssembly和当代Web技术。

### 图形用户界面

[编辑]

Python本身包含了Tkinter库，它是Python的业界标准GUI并被集成进入了IDLE。Tkinter基于了Tcl命令工具，能够支持简单的GUI开发。但是为了让所开发的软件运行速度更快，并与用户的桌面环境更契合，人们一般会选择采用第三方GUI库或框架。主要的第三方GUI库有：

* PyQt：Qt的Python绑定库，由Riverbank Computing公司自从1998年发行，采用GPL许可证或商业许可证。
* PySide：Qt的Python绑定库，由Qt公司自从2009年发行，采用LGPL许可证。
* PyGObject：替代了PyGTK，它是为Python程序访问基于GObject的库而提供的包装库[206]，GObject是GTK、GIO（英语：GIO (software)）和GStreamer等库使用的对象系统。
* Kivy：用于开发多点触控应用软件的开源Python库，采用了自然用户界面（NUI）。
* WxPython：GUI编程框架wxWidgets的Python包装库。
* Gooey：将几乎所有Python 3控制台程序用一行代码转变成GUI应用[207]。
* Dear PyGui：快速而强力的具有极小依赖性的GUI工具箱[208]。
* pywebview：轻量级跨平台的对WebView（英语：WebView）构件的包装器，允许在其本地GUI窗口中显示HTML内容[209]。

### 数据科学

[编辑]

重要的数据科学用第三方软件库有：

* NumPy：Python的基础性的科学计算软件库，它提供了强力的多维阵列对象，广播式阵列运算[210]，集成C/C++和Fortran代码的工具，较为有用的线性代数、傅里叶变换和随机数功能。
* SciPy：用于数学、科学和工程的Python软件库，它以NumPy的多维阵列作为基本数据结构，所包含的模块针对了：统计、最优化、数值积分、常微分方程求解、插值、线性代数、傅里叶变换、信号处理、图像处理等。
* CuPy（英语：CuPy）：NumPy/SciPy兼容的GPU加速的阵列库[211]，它可在NVIDIA CUDA或AMD ROCm平台上充当其直截了当的替代者，来运行现存的NumPy/SciPy代码。
* matplotlib：基于NumPy的综合性绘图（英语：Plot (graphics)）库，用于创建静态的、动画的和交互式的数据可视化。
* pandas：用于数据分析和数据操纵的软件库，它建造在NumPy基础上，提供了加标签数据结构“数据帧”[212]，和统计函数等。它的缺省绘图后端是matplotlib，还可以扩展上第三方绘图（英语：Plot (graphics)）后端[213]。
* Dask（英语：Dask (software)）：伸缩范围从笔记本电脑至计算机集群的并行计算库[214]，它提供的用户接口镜像了PyData生态系统中pandas、scikit-learn和NumPy的API。

#### 数据可视化

[编辑]

主要的数据可视化软件库及仪表板框架有[215]：

* VisPy：高性能交互式2D/3D数据可视化库[216]，它通过多种后端OpenGL库之一来显示非常大的数据集，并提供叫做gloo的受用NumPy的Python风格OpenGL ES 2.0接口。
* glumpy：用于科学数据可视化的快速、可伸缩的Python库[217]，它基于了NumPy和OpenGL绑定库PyOpenGL。
* seaborn：基于matplotlib的数据可视化库[218]，它提供了绘制统计图形的高层接口。
* Vega-Altair：建造在Vega-Lite JSON规定之上的声明式统计可视化库[219]。
* Bokeh：针对现代Web浏览器的交互式数据可视化库[220]，它在大型或流式（英语：Streaming data）的数据集上提供高效的交互性。
* plotly：交互式开源的基于浏览器的图形绘制库[221]，它是建造在plotly.js之上的声明式图表库。
* Dash：数据应用和仪表板框架，它可将现代用户界面元素如下拉选单、滑动条（英语：Slider (computing)）和图形，直接连结至分析型Python代码[222]，它由Plotly（英语：Plotly）公司出品，基于了React、Flask和plotly.js[223]。
* Panel：数据探索（英语：Data exploration）和Web应用框架，它能无缝的集成于PyData生态系统，提供交互式数据表格和可视化等功能[224]，它可用在Pyodide和PyScript之中[225]。Panel是HoloViz生态系统的成员[226]，这个工具组还包括了：hvPlot、HoloViews、GeoViews、Datashader、Lumen、Param和Colorcet。
* Streamlit：迅速将Python脚本转变为Web应用的框架[227]，所生成的应用可共享于Streamlit社区云平台。
* Voilà：将Jupyter Notebook转变为独立的Web应用的框架[228]。

#### 机器学习

[编辑]

基础性的机器学习软件库及框架有：

* scikit-learn：机器学习软件库，它提供的功能包括：监督学习中的分类和回归，无监督学习中的聚类和降维，还有模型选择和数据预处理（英语：Data Preprocessing）。它基于了NumPy、SciPy、轻量级管道库Joblib[229]和线程池控制库threadpoolctl[230]，其绘图功能依赖于matplotlib，还用到了scikit-image（英语：scikit-image）、seaborn和plotly。
* PyMC：基于从Theano分叉出的PyTensor的概率编程库，它用于建立贝叶斯统计模型，并使用马尔可夫链蒙特卡洛（MCMC）方法进行模型拟合。
* TensorFlow：Google开发的“端到端”开源机器学习平台，它提供了Python API[231]，其中实现了Keras API[232]。Keras现在是在TensorFlow 2上建立的深度学习高层API。
* PyTorch：Meta在Torch（英语：Torch (machine_learning)）基础上开发的开源的Python软件包，提供了具有强大的GPU加速的张量计算，和建立在基于tape的自动微分系统上的深度神经网络。
* JAX：Google开发的开源机器学习框架，其核心是可任意组合的对数值纯函数的变换[233]，它结合了修改版本的针对NumPy的自动微分库Autograd[234]，和TensorFlow中的加速线性代数库XLA[235]，它使用XLA来在GPU和TPU上编译和运行NumPy程序。

### 其它种类

[编辑]

* pegen：Python的PEG解析器生成器[236]。
* PeachPy：采用高层Python的可移植高效x86-64汇编代码生成器[237]。
* llvmlite：轻量级的LLVM的Python绑定，用于编写即时编译器[238]。
* xDSL：围绕静态单赋值（SSA）中间表示（IR）建造的Python原生的编辑器框架[239]，它的设计受到了MLIR编译器框架（英语：MLIR (software)）的影响。
* SymPy：支持数学符号运算的软件库，用于提供计算机代数系统。
* SimPy：基于由Python生成器函数定义的进程的离散事件模拟框架[240]。
* ModernGL：不同于PyOpenGL[241]，ModernGL是在OpenGL 3.3+核心上的Python包装器[242]，它简化了简单图形应用如科学模拟、游戏和用户界面的创建。
* PyCUDA：不同于Nvidia的cuda-python[243]，PyCUDA提供对CUDA API的Python风格访问[244]。
* PyOpenCL：PyOpenCL提供对OpenCL API的Python风格访问[245]，例如光滑粒子流体动力学框架PySPH的性能关键部份用Cython和PyOpenCL实现[246]。
* Kompute：基于Vulkan的通用计算框架[247]，它是高速的、支持移动设备、异步的并且针对高级GPU数据处理用例做了优化。
* SQLAlchemy：Python的SQL工具包和采用数据映射器模式的对象关系映射器（ORM）。
* Graphene：GraphQL框架[248]，支持各种数据源如SQLAlchemy、Mongo、Django和定制Python对象等。GQL是常用来与之配合的GraphQL客户端Python库[249]。
* Pillow（英语：Python Imaging Library）：基于Python的图像处理软件库[250]，它支持广泛的图形文件格式，分叉于已终止的PIL。
* Fabric：经由SSH远程执行shell命令的高层库[251]，它产生有用的Python对象作为回馈。
* Prefect：现代工作流程编排框架[252]，它易于建造、调度和监控健壮的数据流水线。
* pygame：开发视频游戏的Python软件库，基于了SDL软件库[253]。视觉小说引擎Ren'Py建造在pygame之上。
* pyglet：Python编写的面向对象的游戏和多媒体库，利用了FFmpeg软件库并需要OpenGL 3.3+。2D街机游戏开发库Arcade基于了pyglet[254]，它还利用了建造在2D物理引擎Chipmunk（英语：Chipmunk (software)）之上的Pymunk[255]。
* Panda3D（英语：Panda3D）：开源游戏引擎，包括了图形、音频、I/O、碰撞侦测和其他与3D游戏有关的功能，使用Python作为游戏开发语言[256]。
* pythonnet：可以近乎无缝的集成.NET通用语言运行库（CLR）的程序包[257]。
* PyInstaller：将Python应用和它的依赖项捆绑成一个单一的包[258]，从而不需要安装Python解释器或任何模块就可以运行应用。

## 应用

[编辑]

在很多作業系統裡，Python是標準的系统元件，它被列入了ISO/IEC 23360-1-4:2021 Linux标准规范（LSB）之语言规定[259]。大多數Linux發行版和macOS都集成了Python，可以在终端模拟器或虚拟控制台（英语：Virtual console）下直接執行Python。第三方工具pipx，可以将Python应用安装于隔离的环境中并在其中运行它[260]。

雖然Python可被粗略地分類為腳本語言，Python的支持者較喜歡稱它為一種高階動態語言，常像“胶水”一样被用来连接软件组件，已经显著的区别于Unix shell、Windows PowerShell这样的语言。基于Python的xonsh，是跨平台的、青睐Unix的shell语言和命令行界面[261]。

### 应用程序

[编辑]

一些Linux發行版，使用Python語言編寫安裝器，比如Ubuntu的Ubiquity和Fedora的Anaconda；或使用它編寫軟件包管理系统，比如Gentoo的Portage。下面举例使用Python编写或将它作为嵌入式脚本的一些应用程序：

* IPython：以多种编程语言进行交互式计算的命令shell和Jupyter的内核，最初为Python开发，它提供了内省、富媒体、shell语法、tab补全（英语：Command-line completion）和历史。
* Conda：跨平台的、语言无关的二进制包管理器，它被Python的Anaconda发行版采用。
* Orange（英语：Orange (software)）：基于scikit-learn和pandas的开源机器学习和数据可视化软件，利用了PyQt5和基于Blink的PyQtWebEngine，通过广大多样的工具箱来建造数据分析工作流程[262]，由卢布尔雅那大学开发。
* SageMath：涵盖许多数学功能的应用软件，它建造在NumPy、SciPy、matplotlib、SymPy、Maxima、GAP（英语：GAP (computer algebra system)）、FLINT、R等开源软件包之上。
* MayaVi（英语：MayaVi）：基于VTK的应用程序和库，用于交互式科学数据可视化和采用Python的3D绘图[263]。
* Pitivi：用Python开发的基于GStreamer的视频编辑软件。
* Blender：開源3D繪圖軟體，使用Python作為建模工具與GUI語言。
* Inkscape：开源的SVG矢量图形编辑器，使用Python用于插件。

### 人工智能

[编辑]

经由Python开发了众多的人工智能模型和作为其支撑的软件库：

* Ray：对人工智能及Python应用的运行规模进行伸缩的统一框架[264]，由Anyscale公司开发。它构成自一个核心的分布式运行时系统，和加速机器学习工作负载的AI软件库。
* Kornia：基于PyTorch的可微分计算机视觉软件库[265]。
* spaCy（英语：spaCy）：用Python和Cython开发的工业级实力的自然语言处理软件库[266]。
* OpenNMT：神经机器翻译和神经序列学习（英语：Sequence learning）的开源生态系统[267]。
* Stable Diffusion：用Python开发的深度学习文本到图像生成模型[268]，基于了CUDA、PyTorch、VAE、U-Net和OpenAI的CLIP[269]，其代码和模型权重已公开发布，可以在大多数配备有适度GPU的消费类计算机硬件上运行。
* Transformers：为下载和训练前沿的预训练模型提供API和工具[270]，由Hugging Face开发，支持在PyTorch、TensorFlow和JAX之间的框架互操作性。
* Gradio：它是一个Python库，允许快速创建和分享用于机器学习模型、API或任何任意Python函数的Web应用程序。使用Gradio，可以构建交互式用户界面，与各种机器学习框架兼容。还可以使用Gradio以交互方式调试模型、从用户获取反馈，并通过自动生成的可共享链接轻松部署模型。[271][272]
* LangChain：它是一个应用框架，旨在简化使用大型语言模型的应用程序。作为一个语言模型集成框架，LangChain的用例包括文档分析和总结摘要, 代码分析和聊天机器人。[273] LangChain提供了一个标准接口，用于将不同的语言模型（LLM）连接在一起，以及与其他工具和数据源的集成。

### 社群流行

[编辑]

自从2003年，Python始终排行于TIOBE编程社区索引（英语：TIOBE Programming Community Index）前十最流行编程语言，在2021年10月它首次达到了第一名最流行语言（居于C和Java之前），并被选为2007年、2010年、2018年、2020年、2021年和2024年的年度编程语言[43]。它有如下著名的社群：

* PyCon：各地社群舉辦的會議，通常每年舉辦。各社群在會議中討論Python相關的議題。
* Python Discord：参与者众多的Python社区[274]。
* PyLadies（英语：PyLadies）：由女性社群發起的社群，主要注重於發展Python的女性程式設計社群。
* Django Girls（英语：Django Girls）：使用Django網頁設計框架，推廣使用Python進行網頁設計的技術。

## 影響的语言

[编辑]

Python的设计和哲学已经影响了很多其他编程语言：

* Boo：使用了缩进、类似的语法和类似的对象模型[23]。
* Cobra（英语：Cobra (programming language)）：使用了缩进和类似的语法[24]。
* CoffeeScript：有受Python启发的语法[25]。
* ECMAScript/JavaScript：从Python借鉴了迭代器和生成器。
* GDScript：内置于Godot游戏引擎的非常类似Python的脚本语言[26]。
* Genie：基于Vala编译器的具有近似Python语法的语言。
* Go：其设计原则受到了Python的可读性与易用性的启发[27]，享有相同风格的数组分片语法。
* Groovy：受到Python等动态类型语言的影响[28]。
* Julia：在表达高级数值计算的方式和支持通用编程上借鉴了Python等语言[31]。
* Kotlin：融合了Python和Java特征，极小化了样板代码而增加了开发效率[32]。
* Nim：使用缩进和类似的语法[34]。
* Ruby：主要从Python等语言中借鉴了特征[35]。
* Starlark（英语：Bazel (software)#Starlark language）：用在Bazel软件中有受Python启发语法的语言[36]。
* Snek：受Python启发的微小的可嵌入式语言，其目标处理器仅有数以kB计的闪存和静态内存[275]。
* Swift：有受Python启发的语法[37]。

在Python基础上开发的编程语言有：

* Taichi Lang：源出自MIT CSAIL实验室，是采用同Python几乎一样语法的指令式并行编程语言[276]，它嵌入在Python之中并使用即时编译器框架如LLVM，将计算密集的Python代码转变成本机GPU或CPU指令。
* Coconut：在Python语法之上增加了用于函数式编程的新特征的Python变体[277]。
* Mojo：基于MLIR编译器框架（英语：MLIR (software)）并设计为Python超集的语言[33]。

## 示例与注释

[编辑]

1. ^ 縮排示例：

def is_even(a: int) -> bool:
"""确定数a是否是偶数."""
if a % 2 == 0:
print('偶数!')
return True
print('奇数!')
return False

# 参数比后续部份多一层缩进
def long_function_name(
var_one, var_two, var_three,
var_four):
# 可选的圆括号内后续行多一层缩进
if (this_is_first_thing
and that_is_second_thing):
do_something()
# 可选的圆括号内后续行不额外缩进
elif (this_is_third_thing and
that_is_fourth_thing):
do_something_different()
# 参数相对行首缩进一层
spam = long_function_name(
arg_one, arg_two,
arg_three, arg_four)
# 参数按开括号界定垂直对齐
eggs = long_function_name(arg_one, arg_two,
arg_three, arg_four)
# 可选的闭括号位置
my_list = [
1, 2, 3,
4, 5, 6,

# 可选的闭括号位置
my_set = {
1, 2, 3,
4, 5, 6,

2. ^ tab字符（从左至右）被替代为1至8个空格，使得直到tab之前的诸字符加上这些替代空格的字符总数，是8的倍数（这意图同于Unix所用规则）。前导于第一个非空白字符的空格的总数，确定了这一行的缩排层级。缩排所用诸字符，不能使用反斜杠来拆分成多个物理行；直到第一个反斜杠之前的空白确定缩排层级。如果源代码文件混合了tab和空格，并且在这种方式下缩排的意义依赖于一个tab相当于多少个空格，则这种缩排因不一致性而被报错并拒绝[97]。
3. ^ 序列解包示例：

>>> a = [1, 2, 3]
>>> i, j, k = a
>>> print(i, j, k)
1 2 3

采用了并行赋值的斐波那契数列函数示例：

def fib(n):  # 写出从第0项到第n项的Fibonacci系列
a, b, i = 0, 1, 0
while i <= n:
print(a, end=' ')
a, b, i = b, a+b, i+1
print()

4. ^ 产生素数的惰性生成器的示例：

from itertools import count

def generate_primes(stop_at=0):
if stop_at != 1:
primes = [2]
yield 2
for n in count(3, 2):
if 0 < stop_at < n:
return # 引发StopIteration例外
composite = False
for p in primes:
if not n % p:
composite = True
break
elif p ** 2 > n:
break
if not composite:
primes.append(n)
yield n

上述函数的隐式迭代用例：

for i in generate_primes():  # 迭代于100以内所有素数上
if i > 100:
break
print(i)

在生成器表达式中使用上述函数，定义了一个惰性的、巨大而并非无限的搜集的示例：

from itertools import islice

primes_under_million = (i for i in generate_primes() if i < 1000000)
two_thousandth_prime = islice(primes_under_million, 1999, 2000)
print(next(two_thousandth_prime))

5. ^ 下面的示例用生成器模拟协程[112]：

def produce(n):
try:
for item in range(n):
print(f'producing item {item} ->')
yield item
except GeneratorExit:
return

def consume():
item = None
try:
while True:
item = yield item
print(f'consuming item {item} <-')
except GeneratorExit:
return

def main():
r = []
t1 = produce(10)
t2 = consume()
try:
next(t2)
while True:
p = next(t1)
r += [t2.send(p)]
except StopIteration:
t2.close()
print(f'result items: {r}')

main()

6. ^ `class`语句的类继承列表给出基础类列表，没有继承列表的类，缺省继承基础类`object`。类的套件接着在新的执行框架（frame）中执行，它使用新建的局部名字空间和原来的全局名字空间。当这个类套件完成执行之时，丢弃它的执行框架并保存它的局部名字空间。一个类对象接着被创建，其基础类采用继承列表，其特性字典采用保存的局部名字空间。类名字接着在原来的局部名字空间中，被绑定到这个类对象。
7. ^ `def`语句的执行，在当前局部名字空间中，将函数名字绑定到一个函数对象（对函数的可执行代码的包装器）。这个函数对象包含到当前全局名字空间的引用，作为调用这个函数时使用的全局名字空间。
8. ^ 原生的协程示例：

import asyncio
import random

async def produce(queue, n):
for item in range(n):
# 生产一个项目，使用sleep模拟I/O操作
print(f'producing item {item} ->')
await asyncio.sleep(random.random())
# 将项目放入队列
await queue.put(item)
# 指示生产完毕
await queue.put(None)

async def consume(queue):
while True:
# 等待来自生产者的项目
item = await queue.get()
if item is None:
break
# 消费这个项目，使用sleep模拟I/O操作
print(f'consuming item {item} <-')
await asyncio.sleep(random.random())

async def main():
queue = asyncio.Queue()
task1 = asyncio.create_task(produce(queue, 10))
task2 = asyncio.create_task(consume(queue))
await task1
await task2

asyncio.run(main())

9. ^ 遵循EAFP（请求原谅比获得许可更容易）风格的例外处理示例：

f = None
try:
f = open("aFileName", mode="w")
f.write(could_make_error()) # 不存在could_make_error()则产生错误
except IOError as error:
print(error)
print("不能打开文件")
except:  # 捕获所有例外
print("未预期的错误")
else:  # 在没有出现例外时执行
print("文件写入完全成功")
finally:  # 清除行动，总是执行
if f:
f.close()

10. ^ 使用`with`将文件作为资源来管理的示例：

from contextlib import contextmanager
@contextmanager
def opened(filename, mode="r"):
try:
f = open(filename, mode)
except IOError as error:
print(error)
yield None
else:
try:
yield f
finally:
f.close()

with opened("aFileName", mode="w") as f:
try:
f.write(could_make_error()) # 不存在could_make_error()则产生错误
except AttributeError:
print("不能打开文件")
except:  # 捕获所有例外
print("未预期的错误")
else:  # 在没有出现例外时执行
print("文件写入完全成功")

11. ^ 内建`vars()`函数，返回一个模块、类、实例或任何具有字典特性`__dict__`的对象的字典特性。内建`globals()`函数，返回实现当前模块的名字空间的一个字典。内建`locals()`函数，更新并返回表示当前局部符号表的一个字典。在函数块中而非类块中调用`locals()`之时，它返回自由变量。在模块层级上，`locals()`和`globals()`返回同一个字典。内建`dir()`函数，在无参数时，返回在当前局部作用域内的名字列表；在有一个参数时，尝试返回这个对象的有效特性的列表。[121]
12. ^ 除了在块中出现的每个赋值语句或导入语句之外，下列构造也绑定名字：给函数的形式参数、类定义、函数定义、赋值表达式、在`for`语句头部中和各种`as`关键字之后的标识符目标（target），`as`关键字出现在`import`语句、`with`语句、`except`子句、`except*`子句和结构式模式匹配的`as`模式之中。
13. ^ 完整的Python程序，在一个极小初始化的环境中执行：所有内建和标准模块均可获得，但除了`sys`（各种系统服务）、`builtins`（内建函数、例外和`None`）和`__main__`之外都未被初始化。`__main__`用来为完整程序的执行提供局部和全局名字。当解释器被调用在交互模态下的时候，它一次一个的读取并执行语句；初始环境同于完整程序，每个语句都在`__main__`的名字空间中执行。
顶层代码是启动运行的首个用户指定Python模块。`__main__`是顶层代码运行所在的环境。从命令行使用`-m`参数，作为顶层脚本运行的模块（作为模块`__main__`）是块。此时`__name__`变量被设置为`"__main__"`，籍此可在这个模块中增加直接运行时候执行的代码[116][122]。
14. ^ 局部变量示例：

>>> def spam():
...     print(a)
...
>>> a = 10
>>> spam()

>>> def spam():
...     a = 100
...     print(a)
...
>>> spam()
100
>>> a

>>> def spam():
...     a *= 10
...     print(a)
...
>>> spam()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in spam
UnboundLocalError: cannot access local variable 'a' where it is not associated with a value

15. ^ 非局部变量示例：

>>> def spam():
...     def eggs():
...         nonlocal a
...         a *= 10
...         print(a)
...     a = 10
...     eggs()
...
>>> spam()
100
>>> def spam():
...     def eggs():
...         nonlocal a
...         a *= 10
...         print(a)
...     global a
...     eggs()
...
File "<stdin>", line 3
SyntaxError: no binding for nonlocal 'a' found

16. ^ 全局变量示例：

>>> def spam():
...     global a
...     a *= 10
...     print(a)
...
>>> a = 10
>>> spam()
100
>>> a
100
>>> def spam():
...     def eggs():
...         print(a)
...     global a
...     eggs()
...
>>> a = 10
>>> spam()

>>> def spam():
...     def eggs():
...         a *= 10
...         print(a)
...     global a
...     eggs()
...
>>> spam()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in spam
File "<stdin>", line 3, in eggs
UnboundLocalError: cannot access local variable 'a' where it is not associated with a value

17. ^ 通过表达式列表建立元组示例：

a_tuple = 1, 2, 3, 'four'

通过列表展示建立列表示例：

a_list = [1, 2, 3, 'a dog']

通过字典展示建立字典示例：

a_dictionary = {'key 1': 'value 1', 2: 3, 4: []}

通过集合展示建立集合示例：

some_set = {0, (), False}

18. ^ 列表推导式示例：

>>> [x + 3 for x in range(4)]
[3, 4, 5, 6]

使用列表推导式可以优雅的将快速排序算法表达为：

def qsort(L):
if L == []:
return []
pivot = L[0]
return (qsort([x for x in L[1:] if x < pivot])
+ [pivot]
+ qsort([x for x in L[1:] if x >= pivot]))

生成器表达式示例：

>>> sum(x * x for x in range(10))
285
>>> dict((n, n*n) for n in range(5))
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
>>> set(n*n for n in range(5))
{0, 1, 4, 9, 16}

字典推导式示例：

>>> {x: x + 3 for x in range(4)}
{0: 3, 1: 4, 2: 5, 3: 6}

集合推导式示例：

>>> {x + 3 for x in range(4)}
{3, 4, 5, 6}

19. ^ 可迭代解包和字典解包示例：

>>> a = [1, 2, 3]; b = [4, 5]
>>> c = [*a, b]
>>> c
[1, 2, 3, [4, 5]]
>>> d = {*a, *b}
>>> d
{1, 2, 3, 4, 5}
>>> e = (*a, *b)
>>> e
(1, 2, 3, 4, 5)
>>> f = {'as':1, 'bs':2 }; g = {'cs':3, 'ds':4}
>>> h = {**f, **g}
>>> h
{'as': 1, 'bs': 2, 'cs': 3, 'ds': 4}

20. ^ 列表分片示例：

>>> nums = [0, 1, 2, 3, 4, 5, 6]
>>> nums[2:5]  #从下标2的元素剪切直到下标5之前的元素
[2, 3, 4]
>>> nums[1:]  #从下标1的元素剪切直到末位元素
[1, 2, 3, 4, 5, 6]
>>> nums[:-3]  #从首位元素剪切直到倒数第3个元素之前的元素
[0, 1, 2, 3]
>>> nums[:]  #复制所有元素
[0, 1, 2, 3, 4, 5, 6]
>>> nums[::-1]  #反转所有元素
[6, 5, 4, 3, 2, 1, 0]
>>> nums[1:5:2]  #从下标1的元素剪切直到下标5之前的元素且步长为2
[1, 3]

21. ^ `lambda`表达式示例：

>>> from functools import reduce
>>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])

>>> fac = lambda n: (1 if n<2 else n*fac(n-1))
>>> fac(5)
120
>>> [*map(fac, [1, 2, 3, 4, 5])]
[1, 2, 6, 24, 120]

不动点组合子和邱奇编码可参见专门介绍[131]。

22. ^ 赋值表达式在用作子表达式，即位于分片表达式、条件表达式、`lambda`表达式、关键字参数中的表达式和推导式中的`if`表达式之中，以及在`assert`和`with`语句之中的时候，必须围绕着圆括号。在它们可以使用的所有其他地方，包括在`if`和`while`语句之中，都不要求圆括号[132]。
23. ^ 两个类及元类等的实例关系（蓝色连接）与继承关系（绿色连接）示意图：  |  |

|
|

r = object
c = type
class M(c): pass

class A(metaclass=M): pass

class B(A): pass

b = B()

|  |

>>> type(b)
<class '__main__.B'>
>>> print(type(B), B.__bases__)
<class '__main__.M'> (<class '__main__.A'>,)
>>> print(type(A), A.__bases__)
<class '__main__.M'> (<class 'object'>,)
>>> print(type(M), M.__bases__)
<class 'type'> (<class 'type'>,)
>>> print(type(c), c.__bases__)
<class 'type'> (<class 'object'>,)
>>> print(type(r), r.__bases__)
<class 'type'> ()

24. ^ 词法闭包的例子：

def f(x):
def g(y):
return x + y
return g  # 返回一个闭包。

h = lambda x: lambda y: x + y

# 将指定闭包赋值给变量。
a = f(1)
b = h(1)
c = f(2)
# 使用存储在变量中的闭包。
assert a(5) == 6
assert b(5) == 6
assert c(5) == 7
# 使用闭包而不事先把它们绑定到变量。
assert f(1)(5) == 6  # f(1)是个闭包。
assert h(1)(5) == 6  # h(1)是个闭包。
assert f(2)(5) == 7  # f(2)是个闭包。

25. ^ 可以通过`sys.getrecursionlimit()`，获知当前的递归最大深度限制，还可以通过`sys.setrecursionlimit()`来设置这个限制。例如递归定义的阶乘函数：

def fac(n):
return 1 if n <= 1 else fac(n-1) * n

`fac(991)`可以递归执行至缺省的最大深度限制`1000`，CPython的`_pyrepl`占用了初始的`9`层。

26. ^ 函数的形实参数二者结合示例。例如：

>>> def spam(a):
...     a.append('LovelySpam')
...
>>> def eggs(b):
...     b=100 #实际上是重新绑定了另一个整型对象100
...
>>> a=[]
>>> b=10
>>> spam(a)
>>> eggs(b)
>>> print(a)
['LovelySpam']
>>> print(b)

27. ^ 当形式参数的缺省值是可变对象比如列表或字典的时候，如果这个函数修改了这个对象，则这个形式参数的缺省值就在实效上被修改了。比如：

>>> def f(a, L=[]):
...     L.append(a)
...     return L
...
>>> print(f(1))
[1]
>>> print(f(2))
[1, 2]
>>> print(f(0, []))
[0]
>>> print(f(3))
[1, 2, 3]

这通常不是所预期的效果。一种解决办法是使用`None`作为缺省值，并在函数主体中显式的测试它：

def f(a, L=None):
if L is None:
L = []
L.append(a)
return L

28. ^ 函数的形式参数缺省值的定义示例：

>>> from inspect import getfullargspec
>>> def func(p1, /, p2, p3="x", *, p4): pass
...
>>> getfullargspec(func)
FullArgSpec(args=['p1', 'p2', 'p3'], varargs=None, varkw=None, defaults=('x',), kwonlyargs=['p4'], kwonlydefaults=None, annotations={})

29. ^ 函数的可变参数的定义示例：

>>> from inspect import getfullargspec
>>> def func(p1, /, p2, *args, p3, **kwargs): pass
...
>>> getfullargspec(func)
FullArgSpec(args=['p1', 'p2'], varargs='args', varkw='kwargs', defaults=None, kwonlyargs=['p3'], kwonlydefaults=None, annotations={})

30. ^ 定义修饰器的示例：

def viking_chorus(myfunc):
def inner_func(*args, **kwargs):
for i in range(3):
myfunc(*args, **kwargs)
return inner_func

调用修饰器的示例：

@viking_chorus
def menu_item(*args):
print(", ".join(args)+", and spam")

它等价于：

def menu_item(*args):
print(", ".join(args)+", and spam")

menu_item = viking_chorus(menu_item)

`viking_chorus`修饰后的`menu（英语：Spam (Monty Python sketch)）_item`将原来定义运行3次：

>>> menu_item("egg","bacon")
egg, bacon, and spam
egg, bacon, and spam
egg, bacon, and spam

31. ^ 修饰器工厂示例，这里的`favourite_colour`接受一个实际参数，并返回一个修饰器：

def favourite_colour(colour):
def decorator(func):
def wrapper(*args, **kwargs):
print(f"My favourite colour is {colour}.")
func(*args, **kwargs)
return wrapper
return decorator

def invincible(func):
def wrapper(*args, **kwargs):
print("I'm invincible!")
func(*args, **kwargs)
return wrapper

使用毗连的修饰符链接修饰器示例：

@invincible
@favourite_colour("blue")
def black_knight():
print("None shall pass.")

它等价于：

black_knight = invincible(favourite_colour("blue")(black_knight))

black_knight（英语：Black Knight (Monty Python)）()结果为：

>>> black_knight()
I'm invincible!
My favourite colour is blue.
None shall pass.

32. ^ 对象的方法示例：

>>> class Fish(object):
...     hungry = True
...     def eat(self, food=None):
...         if food is not None:
...             self.hungry = False
...
... def status(self):
...     print("Hungray!" if self.hungry else "Not hungray!")
...
>>> e = Fish()
>>> Fish.hungry = False
>>> e.hungry
False
>>> Fish.hungry = True
>>> e.hungry
True
>>> e.__dict__

>>> status(e)
Hungray!
>>> Fish.status = status
>>> type(Fish.status)
<class 'function'>
>>> type(e.status)
<class 'method'>
>>> e.status()
Hungray!
>>> e.eat("earthworm")
>>> e.__dict__
{'hungry': False}
>>> e.status()
Not hungray!
>>> Fish.hungry
True

33. ^ 特殊方法`__init__`和类变量`__slots__`（槽）示例：

>>> class Bird(object):
...     __slots__ = ['hungry']
...     def __init__(self, *args, **kwargs):
...         self.hungry = True
...     def eat(self, food=None):
...         if food is not None:
...             self.hungry = False
...     def status(self):
...         print("Hungray!" if self.hungry else "Not hungray!")
...
>>> Bird.hungry
<member 'hungry' of 'Bird' objects>
>>> type(Bird.hungry)
<class 'member_descriptor'>
>>> f = Bird()
>>> f.status()
Hungray!
>>> f.eat("mealworm")
>>> f.status()
Not hungray!
>>> assert '__dict__' not in dir(Bird)

34. ^ 在类中采用数据描述器的示例：

>>> class RevealAccess():
...     """正常的设置和返回值的数据描述器，
...        它还打印记录这次访问的一个消息。
...     """
...     def __init__(self, initval=None, name='var'):
...         self.val = initval
...         self.name = name
...     def __get__(self, obj, objtype):
...         print('Retrieving', self.name)
...         return self.val
...     def __set__(self, obj, val):
...         print('Updating', self.name)
...         self.val = val
...
>>> class MyClass():
...     x = RevealAccess(10, 'var "x"')
...     y = 5
...
>>> m = MyClass()
>>> m.x
Retrieving var "x"

>>> vars(m)

>>> MyClass.__dict__['x'].val

>>> m.x = 20
Updating var "x"
>>> vars(m)

>>> MyClass.__dict__['x'].val

>>> m.y

>>> vars(m)

>>> m.y = 5
>>> vars(m)
{'y': 5}

35. ^ 在类中调用`property()`的例子：

>>> class C():
...     def __init__(self, *args, **kwargs):
...         self.__x = None
...     def getx(self):
...         return self.__x
...     def setx(self, value):
...         self.__x = value
...     def delx(self):
...         del self.__x
...     x = property(getx, setx, delx, "I'm the 'x' property.")
...
>>> c = C()
>>> vars(c)
{'_C__x': None}
>>> {*C.__dict__}
{'__module__', '__firstlineno__', '__init__', 'getx', '__doc__', '__static_attributes__', 'delx', '__dict__', '__weakref__', 'setx', 'x'}

上述代码可以采用修饰符进一步的书写为：

>>> class C():
...     def __init__(self, *args, **kwargs):
...         self.__x = None
...     @property
...     def x(self):
...         """I'm the 'x' property."""
...         return self.__x
...     @x.setter
...     def x(self, value):
...         self.__x = value
...     @x.deleter
...     def x(self):
...         del self.__x
...
>>> c = C()
>>> vars(c)
{'_C__x': None}
>>> {*C.__dict__}
{'__module__', '__firstlineno__', '__init__', '__doc__', '__static_attributes__', '__dict__', '__weakref__', 'x'}

36. ^ 类方法、静态方法`__new__`（它是特殊情况而不需要加以修饰）、特殊方法`__call__`、`__len__`、`__getitem__`、`__setitem__`和弱引用集合（英语：Set (abstract data type)）示例：

>>> from weakref import WeakSet
... class D():
...     __template = {}
...     __obj_set = WeakSet()
...     def __new__(cls, *args, **kwargs):
...         obj = super().__new__(cls)
...         cls.__obj_set.add(obj)
...         return obj
...     @classmethod
...     def load(cls, dict):
...         cls.__template |= dict
...     @classmethod
...     def create(cls, *args, **kwargs):
...         return cls(cls.__template, *args, **kwargs)
...     @classmethod
...     def count(cls):
...         return len(cls.__obj_set)
...     @classmethod
...     def contains(cls, obj):
...         return obj in cls.__obj_set
...     def __init__(self, dict={}, /, *args, **kwargs):
...         self.__dict__ |= dict
...         self.__dict__ |= kwargs
...     def __call__(self, *args, **kwargs):
...         self.__dict__ |= kwargs
...         return self.__dict__.copy()
...     def __len__(self):
...         return len(self.__dict__)
...     def __getitem__(self, key):
...         return self.__dict__[key]
...     def __setitem__(self, key, value):
...         self.__dict__[key] = value
...
>>> a = {'ak': 1, 'bk': 2, 'ck': 3}
>>> d = D(a, dk=4)
>>> d()
{'ak': 1, 'bk': 2, 'ck': 3, 'dk': 4}
>>> D.load(a)
>>> e = D.create(ck=4)
>>> e()
{'ak': 1, 'bk': 2, 'ck': 4}
>>> f = D(ak=1, bk=2)
>>> f(ck=3)
{'ak': 1, 'bk': 2, 'ck': 3}
>>> f['ak']

>>> f['ak'] = 5
>>> f()
{'ak': 5, 'bk': 2, 'ck': 3}
>>> len(f)

>>> D.count()

>>> del f
>>> D.count()

>>> d.__weakref__
<weakref at 0x72652697ede0; to 'D' at 0x72652713b230>
>>> D.contains(d)
True
>>> D.contains(1)
False

37. ^ 类方法`__init_subclass__`和在子类中用内建函数`super()`调用超类的实例方法和类方法的例子：

>>> class Thought(object):
...     __cls_descr = "Thought类型"
...     @classmethod
...     def descript(cls):
...         return cls.__cls_descr
...     def __init_subclass__(cls):
...         cls.__cls_descr = "Thought类型的子类型"
...     def __init__(self, *args, **kwargs):
...         self.idea = "我感觉自己斜停在了平行宇宙里。"
...         print(f"我是{type(self).descript()}的新对象！")
...     def message(self, *args):
...         print("\n".join([self.idea] + [*args]))
...
... class Advice(Thought):
...     @classmethod
...     def descript(cls):
...         return super().descript() + "Advice类型"
...     def message(self):
...         super().message("警告：日历中的日期比实际显示的更近！")
...
>>> t = Thought()
我是Thought类型的新对象！
>>> t.message()
我感觉自己斜停在了平行宇宙里。
>>> a = Advice()
我是Thought类型的子类型Advice类型的新对象！
>>> a.message()
我感觉自己斜停在了平行宇宙里。
警告：日历中的日期比实际显示的更近！
>>> super(Advice, a).message()
我感觉自己斜停在了平行宇宙里。
>>> Advice.super = super(Advice)
>>> a.super.message()
我感觉自己斜停在了平行宇宙里。
>>> [*super.__dict__]
['__new__', '__repr__', '__getattribute__', '__get__', '__init__', '__thisclass__', '__self__', '__self_class__', '__doc__']
>>> super(Advice).__thisclass__
<class '__main__.Advice'>
>>> assert super(Advice).__self__ is None
>>> assert super(Advice).__self_class__ is None
>>> super(Advice, a).__self__
<__main__.Advice object at 0x754299f19940>
>>> super(Advice, a).__self_class__
<class '__main__.Advice'>
>>> super(Thought, Advice).__thisclass__
<class '__main__.Thought'>
>>> super(Thought, Advice).__self__
<class '__main__.Advice'>
>>> super(Thought, Advice).__self_class__
<class '__main__.Advice'>

## 引用

[编辑]

1. ^ 1.0 1.1 GitHub repository of Python 0.9.1 source.  [2023-02-25]. （原始内容存档于2023-03-05）.
HISTORY. Python source distribution. Python Foundation.  [2017-11-23]. （原始内容存档于2017-12-01）.
2. ^ "Python 3.14 RC1 Released With Free-Threaded Python Officially Supported"; 检索日期: 2025年7月23日; 作品或名稱使用語言: 英語; 出版日期: 2025年7月22日; 宣传物: Phoronix.
3. ^ Python 3.14 release candidate 1 is go!. 2025年7月22日  [2025年7月23日] （英語）. 引文格式1维护：未识别语文类型 (link)
4. ^ Python 3.13.6 is now available. 2025年8月6日  [2025年8月7日] （英語）. 引文格式1维护：未识别语文类型 (link)
5. ^ 5.0 5.1 Glossary — duck-typing.  [2023-06-28]. （原始内容存档于2020-06-25）.
6. ^ Why is Python a dynamic language and also a strongly typed language - Python Wiki. wiki.python.org.  [2021-01-27]. （原始内容存档于2021-03-14）.
7. ^ 7.0 7.1 PEP 483 – The Theory of Type Hints.  [2023-03-16]. （原始内容存档于2023-03-26）.
8. ^ PEP 11 – CPython platform support.
9. ^ File extension .pyo was removed in Python 3.5. See PEP 0488 （页面存档备份，存于互联网档案馆）
10. ^ Holth, Moore. PEP 0441 -- Improving Python ZIP Application Support. 2014-03-30  [2015-11-12]. （原始内容存档于2018-12-26）.
11. ^ 11.0 11.1 11.2 Why was Python created in the first place?. Python FAQ.  [2007-03-22]. （原始内容存档于2008-02-23）.
12. ^ Andrew Kuchling, Guido van Rossum. LJ Interviews Guido van Rossum. 1998-11-01  [2023-03-21]. （原始内容存档于2023-03-30）. "String slicing came from Algol-68 and Icon."
13. ^ 13.0 13.1 The Python Standard Library － Functional Programming Modules － itertools — Functions creating iterators for efficient looping.  [2020-04-22]. （原始内容存档于2020-06-14）.
14. ^ van Rossum, Guido. An Introduction to Python for UNIX/C Programmers. Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). 1993  [2021-03-14]. （原始内容存档于2013-06-17）. "even though the design of C is far from ideal, its influence on Python is considerable."
15. ^ 15.0 15.1 The Python Tutorial － 9. Classes.  [2012-02-20]. （原始内容存档于2012-10-23）. "Compared with other programming languages, Python’s class mechanism adds classes with a minimum of new syntax and semantics. It is a mixture of the class mechanisms found in C++ and Modula-3."
16. ^ Fredrik Lundh. Python-list mailing list － passing by refference.  [2023-03-06]. （原始内容存档于2023-03-06）. "replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model."
17. ^ 17.0 17.1 Simionato, Michele. The Python 2.3 Method Resolution Order. Python Software Foundation.  [2021-03-14]. （原始内容存档于2020-08-20）. "The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers."
18. ^ Kuchling, A. M. Functional Programming HOWTO. Python v2.7.2 documentation. Python Software Foundation.  [2012-02-09]. （原始内容存档于2012-10-24）.
19. ^ 19.0 19.1 19.2 Guido van Rossum. Python Reference Manual － Version 1.2 (PDF). CWI Report CS-R9525. May 1995  [2023-03-04]. （原始内容存档 (PDF)于2023-03-05）. "Python is a simple, yet powerful, interpreted programming language that bridges the gap between C and shell programming, and is thus ideally suited for "throw-away（英语：Software_prototyping#Throwaway_prototyping） programming" and rapid prototyping. Its syntax is put together from constructs borrowed from a variety of other languages; most prominent are influences from ABC, C, Modula-3 and Icon.
The Python interpreter is easily extended with new functions and data types implemented in C. Python is also suitable as an extension language for highly customizable C applications such as editors or window managers."
20. ^ Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony. PEP 318 – Decorators for Functions and Methods. Python Enhancement Proposals. Python Software Foundation. 2004-09-02  [2012-02-24]. （原始内容存档于2020-06-03）.
21. ^ More Control Flow Tools. Python 3 documentation. Python Software Foundation.  [2015-07-24]. （原始内容存档于2016-06-04）.
22. ^ re — Regular expression operations. docs.python.org.  [2022-09-06]. （原始内容存档于2018-07-18）. "This module provides regular expression matching operations similar to those found in Perl."
23. ^ 23.0 23.1 Gotchas for Python Users. boo.codehaus.org. Codehaus Foundation.  [2008-11-24]. （原始内容存档于2008-12-11）.
24. ^ 24.0 24.1 Esterbrook, Charles. Acknowledgements. cobra-language.com. Cobra Language.  [2010-04-07]. （原始内容存档于2008-02-08）.
25. ^ 25.0 25.1 CoffeeScript for Python Programmers. "CoffeeScript is a programming language whose syntax is clearly designed to match much of Python (with additional inspirations from Perl, ECMAScript, Ruby, etc.)."
26. ^ 26.0 26.1 FAQ: What is GDScript and why should I use it?.  [2020-09-13]. （原始内容存档于2020-05-19）.
27. ^ 27.0 27.1 Frequently Asked Questions (FAQ) - The Go Programming Language. The Go Programming Language.  [2016-02-26]. （原始内容存档于2020-05-03）.
28. ^ 28.0 28.1 Strachan, James. Groovy – the birth of a new dynamic language for the Java platform. 2003-08-29  [2007-06-11]. （原始内容存档于2007-04-05）.
29. ^ Perl and Python influences in JavaScript. www.2ality.com. 2013-02-24  [2015-05-15]. （原始内容存档于2018-12-26）.
30. ^ Rauschmayer, Axel. Chapter 3: The Nature of JavaScript; Influences. O'Reilly, Speaking JavaScript.  [2015-05-15]. （原始内容存档于2018-12-26）.
31. ^ 31.0 31.1 Home · The Julia Language. docs.julialang.org.  [2018-08-15]. （原始内容存档于2021-01-11） （英语）.
32. ^ 32.0 32.1 Jalan, Nishant Aanjaney. Programming in Kotlin. CodeX. 2022-11-10  [2024-04-29]. （原始内容存档于2024-11-30） （英语）.
33. ^ 33.0 33.1 Krill, Paul. Mojo language marries Python and MLIR for AI development. InfoWorld. 2023-05-04  [2023-05-05]. （原始内容存档于2023-05-05） （英语）.
34. ^ 34.0 34.1 Yegulalp, Serdar. Nim language draws from best of Python, Rust, Go, and Lisp. InfoWorld. 2017-01-16  [2020-09-13]. （原始内容存档于2018-10-13）. "Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed)."
35. ^ 35.0 35.1 Bini, Ola. Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java. Berkeley: APress. 2007: 3. ISBN 978-1-59059-881-8. "It draws primarily on features from Perl, Smalltalk, Python, Lisp, Dylan, and CLU."
36. ^ 36.0 36.1 Starlark Language.  [2019-05-25]. （原始内容存档于2020-06-15）.
37. ^ 37.0 37.1 Lattner, Chris. Chris Lattner's Homepage. Chris Lattner. 2014-06-03  [2014-06-03]. （原始内容存档于2018-12-25）. "Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list."
38. ^ 彼德·諾米格. Python for Lisp Programmers.  [2020-04-21]. （原始内容存档于2020-06-14）. "Python can be seen as a dialect of Lisp with "traditional" syntax (what Lisp people call "infix" or "m-lisp" syntax)."
39. ^ Rossum, Guido Van. The History of Python: A Brief Timeline of Python. The History of Python. 2009-01-20  [2021-03-05]. （原始内容存档于2020-06-05）.
40. ^ Peterson, Benjamin. Python Insider: Python 2.7.18, the last release of Python 2. Python Insider. 2020-04-20  [2020-04-27]. （原始内容存档于2020-04-26）.
41. ^ Stack Overflow Developer Survey 2024. "JavaScript, Python and SQL are all highly-desired and admired programming languages"
42. ^ the State of Developer Ecosystem Report 2024.
43. ^ 43.0 43.1 TIOBE Index. TIOBE - The Software Quality Company.  [2021-10-06]. （原始内容存档于2020-06-14）.
44. ^ PYPL PopularitY of Programming Language index. pypl.github.io.  [2021-03-26]. （原始内容存档于2017-03-14） （英语）.
45. ^ Guido van Rossum - Resume.  [2022-10-12]. （原始内容存档于2022-12-21）.
46. ^ amoeba operating system.  [2023-02-25]. （原始内容存档于2023-03-05）.
47. ^ Whetting Your Appetite. The Python Tutorial. Python Software Foundation.  [2012-02-20]. （原始内容存档于2012-10-26）.
48. ^ Benevolent dictator for life. Linux Format. 2005-02-01  [2007-11-01]. （原始内容存档于2006-10-01）.
49. ^ Transfer of power.  [2020-11-29]. （原始内容存档于2018-07-12）.
50. ^ PEP 8100. python. Python Software Foundation.  [2019-05-04]. （原始内容存档于2020-06-04）.
51. ^ Steering Council nomination: Guido van Rossum (2020 term).  [2020-10-11]. （原始内容存档于2019-12-29）.
52. ^ The Making of Python. Artima Developer.  [2007-03-22]. （原始内容存档于2016-09-01）.
53. ^ Older source releases (1.0.1 - 1.6).  [2023-03-05]. （原始内容存档于2023-03-05）.
54. ^ HISTORY.  [2020-09-12]. （原始内容存档于2017-12-01）. "Lambda expressions are particularly useful in combination with map(), filter() and reduce(), described below. Thanks to Amrit Prem for submitting this code (as well as map(), filter(), reduce() and xrange())!"
55. ^ LJ #37: Python 1.4 Update.  [2007-04-29]. （原始内容存档于2007-05-01）.
56. ^ Kuchling, A. M.; Zadka, Moshe. What's New in Python 2.0. Python Software Foundation. 2000-10-16  [2012-02-11]. （原始内容存档于2012-10-23）.
57. ^ Hylton, Jeremy. PEP 227 － Statically Nested Scopes. 2000-11-01  [2007-03-22]. （原始内容存档于2007-03-29）.
58. ^ 58.0 58.1 Guido van Rossum. Unifying types and classes in Python 2.2.  [2020-09-26]. （原始内容存档于2019-09-28）.
59. ^ What’s New in Python 2.2 － PEP 234: Iterators.  [2020-10-21]. （原始内容存档于2021-02-07）.
60. ^ What’s New in Python 2.2 － PEP 255: Simple Generators.  [2020-10-21]. （原始内容存档于2021-02-07）.
61. ^ What’s New in Python 2.2 － Descriptors.  [2020-10-21]. （原始内容存档于2021-02-07）.
62. ^ 62.0 62.1 What’s New in Python 2.4 － PEP 318: Decorators for Functions and Methods.  [2020-10-21]. （原始内容存档于2021-02-07）.
63. ^ PEP 339 – Design of the CPython Compiler. 2005  [2023-03-06]. （原始内容存档于2023-03-06）.
64. ^ Guido van Rossum. What’s New In Python 3.0.  [2023-02-18]. （原始内容存档于2012-11-02）.
65. ^ What’s New In Python 3.4 － asyncio.  [2023-02-22]. （原始内容存档于2023-06-13）.
66. ^ What’s New In Python 3.5 － PEP 484 - Type Hints.  [2023-02-25]. （原始内容存档于2016-06-18）.
67. ^ PEP 492 － Coroutines with async and await syntax.  [2019-11-21]. （原始内容存档于2019-01-05）.
68. ^ 68.0 68.1 What’s New in Python 3.8 － Assignment expressions.  [2023-03-08]. （原始内容存档于2021-06-01）.
69. ^ Paul Krill, Guido Van Rossum. Guido van Rossum resigns: What’s next for Python. 2018-07-27  [2023-03-19]. （原始内容存档于2023-03-19）.
70. ^ PEP 585 – Type Hinting Generics In Standard Collections.  [2023-03-17]. （原始内容存档于2023-05-25）.
The Python Standard Library － Built-in Types － Generic Alias Type.  [2023-03-17]. （原始内容存档于2020-06-14）.
71. ^ What’s New In Python 3.9 － New Parser.  [2023-02-22]. （原始内容存档于2020-10-07）.
72. ^ What’s New In Python 3.10 － PEP 634: Structural Pattern Matching.  [2023-02-22]. （原始内容存档于2023-06-11）.
73. ^ PEP 604 – Allow writing union types as X | Y.  [2023-03-17]. （原始内容存档于2023-05-26）.
The Python Standard Library － Built-in Types － Union Type.  [2023-03-17]. （原始内容存档于2020-06-14）.
74. ^ What’s New In Python 3.11 － Faster CPython.  [2023-03-24]. （原始内容存档于2023-06-13）.
75. ^ What’s New In Python 3.12 — PEP 695: Type Parameter Syntax.  [2023-10-20]. （原始内容存档于2023-11-13）.
76. ^ What’s New In Python 3.13.  [2024-09-17]. （原始内容存档于2024-09-29）.
77. ^ What’s new in Python 3.14.
78. ^ Python Developer's Guide — Status of Python Version. devguide.python.org.  [2022-08-26]. （原始内容存档于2022-08-26）.
79. ^ PEP 8106 – 2025 Term Steering Council election. Python Software Foundation.  [2024-12-11]. （原始内容存档于2025-01-30）.
80. ^ 80.0 80.1 The Python Language Reference － 3. Data model － Special method names.  [2020-09-25]. （原始内容存档于2012-10-26）.
81. ^ aspectlib. "aspectlib is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing behavior in existing code is desired. It includes tools for debugging and testing: simple mock/record and a complete capture/replay framework."
82. ^ PEP 316 -- Programming by Contract for Python.  [2021-01-17]. （原始内容存档于2021-01-22）.
* Deal.  [2021-06-20]. （原始内容存档于2021-07-16）. "python library for design by contract (DbC) and checking values, exceptions, and side-effects."
* icontract.  [2021-01-17]. （原始内容存档于2021-01-21）. "icontract provides design-by-contract to Python3 with informative violation messages and inheritance."
83. ^ PyDatalog.  [2012-07-22]. （原始内容存档于2020-06-13）.
84. ^ Extending Python with C or C++ — Reference Counting in Python. Docs.python.org.  [2020-06-05]. （原始内容存档于2012-10-18） （英语）.
85. ^ CPython’s internals — Garbage collector design — Optimization: generations.  [2024-09-17]. （原始内容存档于2025-01-03）.
86. ^ Functional Programming HOWTO.  [2020-09-26]. （原始内容存档于2012-10-24）.
87. ^ van Rossum, Guido. The fate of reduce() in Python 3000. Artima Developer.  [2007-03-22]. （原始内容存档于2007-04-07）.
88. ^ Functional Programming Modules. Docs.python.org.  [2020-09-26]. （原始内容存档于2020-09-20）.
89. ^ Guido van Rossum. Extending and Embedding the Python Interpreter － Version 1.2 (PDF). CWI Report CS-R9527. May 1995  [2023-03-05]. （原始内容存档 (PDF)于2023-03-05）. "Python is an interpreted object oriented programming language. This document describes how to write modules in C or C++ to extend the Python interpreter with new modules. Those modules can define new functions but also new object types and their methods. The document also describes how to embed the Python interpreter in another application, for use as an extension language. Finally, it shows how to compile and link extension modules so that they can be loaded dynamically (at run time) into the interpreter, if the underlying operating system supports this feature."
90. ^ The Python Standard Library － Generic Operating System Services － ctypes — A foreign function library for Python.  [2022-01-14]. （原始内容存档于2022-04-27）.
91. ^ PEP 523 – Adding a frame evaluation API to CPython.  [2022-08-29]. （原始内容存档于2022-08-29）.
92. ^ The Python Language Reference － 7. Simple statements.  [2020-10-30]. （原始内容存档于2023-06-06）.
The Python Language Reference － 10. Full Grammar specification.  [2023-02-17]. （原始内容存档于2023-06-06）. "
`simple_stmts:`
` ``| simple_stmt !';' NEWLINE # Not needed, there for speedup`
` ``| ';'.simple_stmt+ [';'] NEWLINE`"
93. ^ The Python Language Reference － 2. Lexical analysis － Comments.  [2023-03-11]. （原始内容存档于2018-01-09）.
94. ^ 94.0 94.1 The Python Language Reference － 2. Lexical analysis － Explicit line joining.  [2023-02-17]. （原始内容存档于2018-01-09）.
95. ^ The Python Language Reference － 8. Compound statements.  [2023-02-18]. （原始内容存档于2019-11-27）.
96. ^ PEP 8 – Style Guide for Python Code － Indentation.  [2020-09-26]. （原始内容存档于2018-07-13）.
97. ^ The Python Language Reference － 2. Lexical analysis － Indentation.  [2023-02-18]. （原始内容存档于2018-01-09）.
98. ^ The Python Language Reference － 10. Full Grammar specification.  [2023-02-17]. （原始内容存档于2023-06-06）. "
`statements: statement+`
`statement: compound_stmt | simple_stmts`

`block:`
` ``| NEWLINE INDENT statements DEDENT`
` ``| simple_stmts`"
99. ^ The Python Language Reference － 2. Lexical analysis － Keywords.  [2020-09-26]. （原始内容存档于2018-01-09）.
100. ^ What’s New In Python 3.0 － Overview Of Syntax Changes.  [2023-02-18]. （原始内容存档于2012-11-02）.
101. ^ What’s What’s New In Python 3.5 － New Keywords.  [2016-06-01]. （原始内容存档于2016-06-18）.
102. ^ What’s New In Python 3.7.  [2019-11-21]. （原始内容存档于2019-11-28）.
103. ^ The Python Language Reference － 2. Lexical analysis － Soft Keywords.  [2023-03-03]. （原始内容存档于2018-01-09）.
104. ^ PEP 8 – Style Guide for Python Code － Naming Conventions.  [2017-10-06]. （原始内容存档于2018-07-13）.
105. ^ The Python Language Reference － 2. Lexical analysis － Reserved classes of identifiers.  [2023-03-03]. （原始内容存档于2018-01-09）.
106. ^ 106.0 106.1 9.6. Private Variables.  [2020-09-27]. （原始内容存档于2012-10-23）.
107. ^ What’s New in Python 2.2 — Attribute Access.
108. ^ The Python Language Reference － 7. Simple statements － Augmented assignment statements.  [2023-03-08]. （原始内容存档于2023-06-06）.
109. ^ The Python Tutorial － 5. Data Structures － Tuples and Sequences.  [2018-10-17]. （原始内容存档于2020-06-10）.
110. ^ The Python Language Reference － 7. Simple statements － The yield statement.  [2023-03-15]. （原始内容存档于2023-06-06）.
111. ^ The Python Language Reference － 6. Expressions － Yield expressions.  [2023-03-15]. （原始内容存档于2022-09-07）.
112. ^ PEP 342 － Coroutines via Enhanced Generators.  [2019-11-21]. （原始内容存档于2020-05-29）.
113. ^ PEP 380 － Syntax for Delegating to a Subgenerator.  [2019-11-21]. （原始内容存档于2020-06-04）.
114. ^ PEP 525 – Asynchronous Generators.  [2023-03-16]. （原始内容存档于2023-05-21）.
115. ^ 115.0 115.1 The Python Language Reference － 7. Simple statements － The import Statement.  [2020-10-30]. （原始内容存档于2021-02-07）.
116. ^ 116.0 116.1 116.2 The Python Tutorial － 6. Modules.  [2020-10-30]. （原始内容存档于2021-02-06）.
117. ^ What’s New In Python 3.11 － PEP 654: Exception Groups and except*.  [2023-10-20]. （原始内容存档于2023-06-13）.
118. ^ PEP 343 – The “with” Statement.  [2020-09-26]. （原始内容存档于2014-12-14）.
119. ^ The Python Language Reference － 5. The import system － Packages.  [2023-03-07]. （原始内容存档于2022-08-27）.
120. ^ 120.0 120.1 120.2 120.3 The Python Language Reference － 4. Execution model － Naming and binding.  [2023-03-06]. （原始内容存档于2022-09-08）.
121. ^ The Python Standard Library － Built-in Functions.  [2020-09-25]. （原始内容存档于2012-10-25）.
122. ^ The Python Standard Library － Python Runtime Services － __main__ — Top-level code environment.  [2020-10-30]. （原始内容存档于2021-02-07）.
123. ^ The Python Language Reference － 6. Expressions － Parenthesized forms.  [2023-03-13]. （原始内容存档于2022-09-07）.
124. ^ The Python Language Reference － 6. Expressions － Displays for lists, sets and dictionaries.  [2023-03-13]. （原始内容存档于2022-09-07）.
125. ^ Hettinger, Raymond. PEP 289 – Generator Expressions. Python Enhancement Proposals. Python Software Foundation. 2002-01-30  [2012-02-19]. （原始内容存档于2020-06-14）.
126. ^ What’s New In Python 3.5 － PEP 448 － Additional Unpacking Generalizations.  [2023-03-08]. （原始内容存档于2016-06-18）.
127. ^ What’s New In Python 3.5 － PEP 465 － A dedicated infix operator for matrix multiplication.  [2023-03-08]. （原始内容存档于2016-06-18）.
128. ^ NumPy Reference － Routines － Linear algebra (numpy.linalg) － numpy.matmul.  [2022-01-18]. （原始内容存档于2022-04-10）.
129. ^ The Python Language Reference － 6. Expressions － Comparison.  [2023-03-21]. （原始内容存档于2022-09-07）.
130. ^ Brian Kernighan, Dennis Ritchie. The C Programming Language, Second Edition (PDF). Prentice Hall. 1988  [2023-03-23]. （原始内容存档 (PDF)于2023-03-25）. "The relational operators group left-to-right, but this fact is not useful; `a<b<c` is parsed as `(a<b)<c`, and evaluates to either `0` or `1`."
131. ^ Equational derivations of the Y combinator and Church encodings in Python.  [2020-10-21]. （原始内容存档于2020-11-12）.
132. ^ The Python Language Reference － 6. Expressions － Assignment expressions.  [2023-03-08]. （原始内容存档于2022-09-07）.
133. ^ The Python Language Reference － 6. Expressions － Operator precedence.  [2023-03-12]. （原始内容存档于2022-09-07）.
134. ^ The Python Standard Library － Built-in Types － Common Sequence Operations.  [2023-03-17]. （原始内容存档于2020-06-14）.
135. ^ What’s New in Python 3.9 － Dictionary Merge & Update Operators.  [2021-06-12]. （原始内容存档于2020-10-07）.
136. ^ The Python Standard Library － Built-in Functions － round(),  [2023-03-21], （原始内容存档于2012-10-25）
137. ^ Guido van Rossum. Python Reference Manual － Version 1.2 (PDF). CWI Report CS-R9525. May 1995  [2023-03-04]. （原始内容存档 (PDF)于2023-03-05）. "The modulo operator always yields a result with the same sign as its second operand (or zero); …… The integer division and modulo operators are connected by the following identity: `x == (x/y)*y + (x%y)`."
138. ^ PEP 327 – Decimal Data Type.  [2015-09-26]. （原始内容存档于2020-06-04）.
139. ^ The Python Standard Library － Numeric and Mathematical Modules － decimal — Decimal fixed point and floating point arithmetic.  [2023-03-21]. （原始内容存档于2023-06-13）.
140. ^ The Python Standard Library － Numeric and Mathematical Modules － fractions — Rational numbers.  [2023-03-21]. （原始内容存档于2023-05-26）.
141. ^ gmpy2 is an optimized, C-coded Python extension module that supports fast multiple-precision arithmetic.  [2024-10-14]. （原始内容存档于2024-12-19）.
142. ^ The Python Language Reference － 2. Lexical analysis － String literal concatenation.  [2023-03-12]. （原始内容存档于2018-01-09）.
143. ^ What’s New In Python 3.0 － PEP 3101: Advanced String Formatting.  [2023-03-19]. （原始内容存档于2012-11-02）.
The Python Standard Library － Text Processing Services － string — Common string operations － Format String Syntax.  [2023-03-21]. （原始内容存档于2023-06-06）.
144. ^ The Python Standard Library － Built-in Types － printf-style String Formatting.  [2023-03-21]. （原始内容存档于2020-06-14）.
145. ^ PEP 498 － Literal String Interpolation. python.org.  [2017-03-08]. （原始内容存档于2020-06-15）.
146. ^ The Python Language Reference － 2. Lexical analysis － Formatted string literals.  [2023-03-13]. （原始内容存档于2018-01-09）.
147. ^ The Python Language Reference － 3. Data model － The standard type hierarchy.
148. ^ 148.0 148.1 PEP 484 -- Type Hints.  [2021-03-01]. （原始内容存档于2021-02-09）.
149. ^ 149.0 149.1 mypy - Optional Static Typing for Python.  [2017-01-28]. （原始内容存档于2020-06-06）.
150. ^ Moshe Zadka, Guido van Rossum. PEP 237 － Unifying Long Integers and Integers. 2001-03-11. （原始内容存档于2020-05-28）.
151. ^ The Python Tutorial － 15. Floating Point Arithmetic: Issues and Limitations.  [2023-03-23]. （原始内容存档于2023-06-02）. "almost all platforms map Python floats to IEEE-754 “double precision”."
152. ^ The Python Standard Library － Built-in Types － Ranges.  [2019-10-03]. （原始内容存档于2020-06-14）.
153. ^ Python HOWTOs — Unicode HOWTO.
154. ^ NumPy fundamentals － Indexing on ndarrays － Dimensional indexing tools.  [2023-03-23]. （原始内容存档于2023-06-01）.
155. ^ The Python Standard Library － Built-in Types － The Null Object.  [2023-03-24]. （原始内容存档于2023-03-24）.
156. ^ Glossary — closure variable.
157. ^ van Rossum, Guido. Language Design Is Not Just Solving Puzzles. Artima forums. Artima. 2006-02-09  [2007-03-21]. （原始内容存档于2020-01-17）. "the complexity introduced by a solution to a design problem must be somehow proportional to the problem's importance. …… Mathematicians don't mind these -- a proof is a proof is a proof, no matter whether it contains 2 or 2000 steps, or requires an infinite-dimensional space to prove something about integers. …… Features of a programming language, whether syntactic or semantic, are all part of the language's user interface. And a user interface can handle only so much complexity or it becomes unusable. This is also the reason why Python will never have continuations, and even why I'm uninterested in optimizing tail recursion."
van Rossum, Guido. Tail Recursion Elimination. Neopythonic.blogspot.be. 2009-04-22  [2012-12-03]. （原始内容存档于2018-05-19）. "Once tail recursion elimination exists, developers will start writing code that depends on it, and their code won't run on implementations that don't provide it …… I don't believe in recursion as the basis of all programming. This is a fundamental belief of certain computer scientists, especially those who love Scheme and like to teach programming by starting with a "cons" cell and recursion."
158. ^ returns documentation — Trampolines.  [2024-09-28]. （原始内容存档于2024-12-23）.
159. ^ The Python Tutorial － 4. More Control Flow Tools － Defining Functions.  [2023-03-06]. （原始内容存档于2023-06-10）.
160. ^ PEP 3107 -- Function Annotations.  [2021-03-01]. （原始内容存档于2015-01-06）.
161. ^ The Python Standard Library － Functional Programming Modules － functools — Higher-order functions and operations on callable objects.  [2023-03-18]. （原始内容存档于2021-06-02）.
162. ^ PEP 3115 – Metaclasses in Python 3000.  [2023-03-21]. （原始内容存档于2023-04-02）.
163. ^ PEP 3119 – Introducing Abstract Base Classes.
164. ^ The Python Language Reference － 3. Data model － Customizing class creation.  [2023-03-21]. （原始内容存档于2012-10-26）.
PEP 487 – Simpler customisation of class creation.  [2023-03-21]. （原始内容存档于2023-03-21）.
165. ^ Why must 'self' be used explicitly in method definitions and calls?. Design and History FAQ. Python Software Foundation.  [2012-02-19]. （原始内容存档于2012-10-24）.
166. ^ The Python Language Reference — Data model — Class instances.
167. ^ The Python Language Reference — Data model — Customizing attribute access.
168. ^ Descriptor HowTo Guide.  [2020-09-26]. （原始内容存档于2020-09-18）.
169. ^ The Python Standard Library － Built-in Functions － class property.  [2020-09-25]. （原始内容存档于2018-10-26）.
170. ^ The Python Standard Library － Built-in Functions － class super.  [2020-09-25]. （原始内容存档于2018-10-26）.
171. ^ The Python Standard Library.  [2023-03-09]. （原始内容存档于2023-06-06）.
172. ^ Python Interpreters Benchmarks.  [2022-08-30]. （原始内容存档于2022-08-20）.
173. ^ Python Bytecode Instructions. Docs.python.org.  [2016-02-16]. （原始内容存档于2020-06-05）.
Python module to generate and modify bytecode.  [2023-02-22]. （原始内容存档于2023-04-04）.
174. ^ Obi Ike-Nwosu. Inside The Python Virtual Machine.  [2023-01-29]. （原始内容存档于2021-01-29）. version 2019-03-02 (PDF).  [2023-01-30]. （原始内容存档 (PDF)于2023-03-05）. 中文翻译.  [2023-01-30]. （原始内容存档于2023-03-05）.
175. ^ The Computer Language Benchmarks Game.
176. ^ Glossary — global interpreter lock.  [2023-09-19]. （原始内容存档于2020-06-25）.
177. ^ Application-level Stackless features.
178. ^ Codon － A high-performance, zero-overhead, extensible Python compiler with built-in NumPy support.  [2023-03-24]. （原始内容存档于2023-05-25）.
179. ^ Rachel Gordon. Python-based compiler achieves orders-of-magnitude speedups. MIT CSAIL. 2023-03-14  [2023-03-25]. （原始内容存档于2023-03-26）.
180. ^ Differences with Python.  [2024-09-26]. （原始内容存档于2023-05-25）.
181. ^ Pyodide is a Python distribution for the browser and Node.js based on WebAssembly.  [2023-12-28]. （原始内容存档于2024-04-03）.
182. ^ RustPython.  [2022-03-04]. （原始内容存档于2022-04-24）.
183. ^ Brython (Browser Python) is an implementation of Python 3 running in the browser.  [2023-06-17]. （原始内容存档于2023-10-28）.
184. ^ GraalPy – A high-performance embeddable Python 3 runtime for Java.
185. ^ Cython Users Guide — Using Parallelism.  [2023-09-19]. （原始内容存档于2023-10-11）.
186. ^ mypyc — Compile type annotated Python to fast C extensions.  [2024-09-26]. （原始内容存档于2025-01-20）.
187. ^ Nuitka is a Python compiler written in Python.  [2023-09-18]. （原始内容存档于2023-11-11）.
188. ^ Shed Skin is a restricted-Python-to-C++ compiler.
189. ^ Pythran － Ahead of Time compiler for numeric kernels.  [2022-08-29]. （原始内容存档于2022-08-29）.
190. ^ Transcrypt — Python 3.9 to JavaScript compiler - Lean, fast, open!.  [2023-09-18]. （原始内容存档于2023-09-19）.
191. ^ MyHDL － From Python to Silicon!.  [2023-03-05]. （原始内容存档于2023-06-05）.
192. ^ Pyston － A faster and highly-compatible implementation of the Python programming language.  [2022-08-29]. （原始内容存档于2022-08-29）. "Pyston was started at Dropbox in 2014 ……. …… In 2017 …… Pyston project was shut down. …… In 2019 the Pyston developers regrouped ……. …… In mid-2021 the Pyston developers joined Anaconda ……."
193. ^ Pyjion － A JIT for Python based upon CoreCLR.  [2022-08-29]. （原始内容存档于2022-08-29）.
194. ^ Cinder is Meta's internal performance-oriented production version of CPython.  [2022-08-26]. （原始内容存档于2021-05-04）.
195. ^ Grumpy is a Python to Go source code transcompiler and runtime.
196. ^ py2many: Python to many CLike languages transpiler.
197. ^ Tool recommendations. python.org.  [2022-04-21]. （原始内容存档于2022-09-06） （英语）.
198. ^ venv — Creation of virtual environments.  [2023-05-07]. （原始内容存档于2023-06-13）.
199. ^ virtualenv — A tool for creating isolated virtual python environments.  [2023-05-07]. （原始内容存档于2023-06-11）.
200. ^ Pipenv — Python Development Workflow for Humans.  [2022-08-29]. （原始内容存档于2019-11-17）.
201. ^ FAQ: Django appears to be a MVC framework, but you call the Controller the “view”, and the View the “template”. How come you don’t use the standard names?.  [2022-09-01]. （原始内容存档于2022-09-02）.
202. ^ Asynchronous HTTP Client/Server for asyncio and Python.  [2021-01-14]. （原始内容存档于2021-01-15）.
203. ^ uvloop is a fast, drop-in replacement of the built-in asyncio event loop.  [2023-03-24]. （原始内容存档于2023-05-25）.
204. ^ FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.
205. ^ PyScript is an open source platform for Python in the browser.  [2024-09-26]. （原始内容存档于2025-01-18）.
206. ^ PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more.  [2023-03-05]. （原始内容存档于2023-06-07）.
207. ^ Gooey － Turn (almost) any Python command line program into a full GUI application with one line.  [2022-08-28]. （原始内容存档于2022-08-28）.
208. ^ Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies.  [2023-03-18]. （原始内容存档于2023-05-18）.
209. ^ pywebview is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its own native GUI window.  [2023-03-18]. （原始内容存档于2023-05-06）.
210. ^ NumPy Fundamentals and usage — Broadcasting.  [2023-09-20]. （原始内容存档于2022-07-03）. "The term broadcasting describes how NumPy treats arrays with different shapes during arithmetic operations. Subject to certain constraints, the smaller array is “broadcast” across the larger array so that they have compatible shapes."
211. ^ CuPy: NumPy & SciPy for GPU.  [2022-08-31]. （原始内容存档于2022-08-31）.
212. ^ DataFrame.  [2022-09-01]. （原始内容存档于2022-09-01）. "DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheet or SQL table, or a dict of Series objects. It is generally the most commonly used pandas object."
213. ^ Python tools for data visualization — High-level tools.  [2023-09-19]. （原始内容存档于2023-09-28）.
214. ^ Dask － Parallel computing with task scheduling.  [2022-08-31]. （原始内容存档于2022-08-31）.
215. ^ Python tools for data visualization.  [2022-09-21]. （原始内容存档于2024-05-04）.
216. ^ VisPy － interactive scientific visualization in Python.  [2022-08-30]. （原始内容存档于2022-07-13）.
217. ^ glumpy — Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization.  [2023-09-18]. （原始内容存档于2023-09-19）.
218. ^ seaborn: statistical data visualization.  [2024-09-24]. （原始内容存档于2020-12-03）.
219. ^ Vega-Altair: Declarative Visualization in Python.  [2024-09-25]. （原始内容存档于2025-02-02）.
220. ^ Bokeh — Interactive Data Visualization in the browser, from Python.  [2023-09-19]. （原始内容存档于2023-10-12）.
221. ^ plotly.py is an interactive, open-source, and browser-based graphing library for Python.  [2024-09-24]. （原始内容存档于2025-01-24）.
222. ^ Dash － Analytical Web Apps for Python, R, Julia, and Jupyter.  [2022-09-21]. （原始内容存档于2022-12-05）.
223. ^ Plotly.js － Open-source JavaScript charting library behind Plotly and Dash.  [2022-09-21]. （原始内容存档于2022-12-21）.
224. ^ Panel － A high-level app and dashboarding solution for Python.  [2022-09-21]. （原始内容存档于2023-01-16）.
225. ^ Using Panel in Pyodide & PyScript.
226. ^ HoloViz — High-level tools to simplify visualization in Python.  [2023-09-19]. （原始内容存档于2023-10-11）.
227. ^ Streamlit — The fastest way to build data apps in Python.  [2022-09-21]. （原始内容存档于2023-01-17）.
228. ^ Voilà － Voilà turns Jupyter notebooks into standalone web applications.  [2022-09-21]. （原始内容存档于2022-12-31）.
229. ^ Joblib: running Python functions as pipeline jobs.  [2022-09-19]. （原始内容存档于2022-12-07）.
230. ^ Thread-pool Controls.  [2022-09-19]. （原始内容存档于2022-11-02）.
231. ^ TensorFlow API Documentation － Module: tf.  [2022-08-31]. （原始内容存档于2022-09-05）.
232. ^ TensorFlow API Documentation － Module: tf.keras.  [2022-08-31]. （原始内容存档于2020-01-22）.
233. ^ JAX － Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more.  [2022-08-28]. （原始内容存档于2021-02-05）.
234. ^ Autograd － Efficiently computes derivatives of numpy code.  [2022-08-28]. （原始内容存档于2022-07-18）.
235. ^ XLA: Optimizing Compiler for Machine Learning.  [2022-08-28]. （原始内容存档于2022-09-01）.
236. ^ PEG parser generator for Python.  [2023-02-22]. （原始内容存档于2023-03-05）.
Pablo Galindo Salgado. Guide to the Parser.  [2023-02-22]. （原始内容存档于2023-05-24）.
Bryan Ford. The Packrat Parsing and Parsing Expression Grammars Page.  [2023-04-18]. （原始内容存档于2023-06-02）.
237. ^ PeachPy － Portable Efficient Assembly Code-generator in Higher-level Python.  [2023-04-04]. （原始内容存档于2023-04-04）.
238. ^ llvmlite — A lightweight LLVM python binding for writing JIT compilers.  [2024-09-21]. （原始内容存档于2025-02-06）.
239. ^ xDSL is a Python-native compiler framework built around SSA-based intermediate representations (IRs).
240. ^ SimPy — Discrete event simulation for Python.  [2023-08-17]. （原始内容存档于2016-12-12）.
241. ^ PyOpenGL is the most common cross platform Python binding to OpenGL and related APIs.  [2022-01-07]. （原始内容存档于2011-06-15）.
242. ^ ModernGL － Modern OpenGL binding for python.  [2022-01-07]. （原始内容存档于2022-04-15）.
243. ^ CUDA Python Manual.  [2022-08-30]. （原始内容存档于2022-08-30）.
244. ^ PyCUDA gives you easy, Pythonic access to Nvidia’s CUDA parallel computation API.  [2022-05-29]. （原始内容存档于2022-06-28）.
245. ^ PyOpenCL gives you easy, Pythonic access to the OpenCL parallel computation API.  [2021-07-29]. （原始内容存档于2022-03-08）.
246. ^ PySPH — A framework for Smoothed Particle Hydrodynamics in Python.  [2023-12-26]. （原始内容存档于2023-12-26）.
247. ^ Kompute: Blazing fast, mobile-enabled, asynchronous, and optimized for advanced GPU processing usecases.  [2025-01-22]. （原始内容存档于2025-01-24）.
248. ^ Graphene — GraphQL framework for Python.  [2023-12-20]. （原始内容存档于2024-04-28）.
249. ^ GQL — A GraphQL client in Python.  [2023-12-25]. （原始内容存档于2024-04-24）.
250. ^ Pillow — Python Imaging Library (Fork).
251. ^ Fabric － Pythonic remote execution.  [2013-04-08]. （原始内容存档于2014-04-11）.
252. ^ Prefect － The easiest way to coordinate your dataflow.  [2022-09-22]. （原始内容存档于2023-01-11）.
253. ^ SDL Language Bindings.  [2022-02-16]. （原始内容存档于2019-03-12）.
254. ^ Arcade — Easy to use Python library for creating 2D arcade games.  [2023-10-10]. （原始内容存档于2023-11-08）.
255. ^ Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python.  [2024-09-24]. （原始内容存档于2024-11-26）.
256. ^ Panda3D Manual.  [2022-09-04]. （原始内容存档于2018-12-29）.
257. ^ pythonnet － Python.NET.  [2022-08-30]. （原始内容存档于2022-09-01）.
258. ^ PyInstaller bundles a Python application and all its dependencies into a single package.  [2021-03-13]. （原始内容存档于2021-06-07）.
259. ^ LSB — Runtime Languages — Python Interpreter.  [2023-06-16]. （原始内容存档于2016-05-01）. "The default installed Python version shall be 2.4.2 or greater."
260. ^ pipx — Install and Run Python Applications in Isolated Environmentspipenv.  [2023-05-07]. （原始内容存档于2023-06-05）.
261. ^ XONSH is a Python-powered shell.  [2022-08-28]. （原始内容存档于2022-09-03）.
262. ^ Data Mining Fruitful and Fun － Open source machine learning and data visualization. Build data analysis workflows visually, with a large, diverse toolbox..  [2023-06-14]. （原始内容存档于2023-06-06）.
263. ^ Mayavi: 3D scientific data visualization and plotting in Python.  [2023-09-20]. （原始内容存档于2023-10-11）.
264. ^ Ray － Effortlessly scale your most complex workloads.  [2022-09-19]. （原始内容存档于2022-12-13）.
265. ^ Kornia － Open Source Differentiable Computer Vision Library.  [2022-09-22]. （原始内容存档于2023-01-10）.
266. ^ spaCy: Industrial-strength NLP.  [2023-09-22]. （原始内容存档于2023-10-11）.
267. ^ Open source ecosystem for neural machine translation and neural sequence learning.
268. ^ Generative Models by Stability AI.  [2023-10-14]. （原始内容存档于2023-11-11）.
269. ^ CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image.  [2023-10-18]. （原始内容存档于2023-09-05）.
270. ^ Transformers — State-of-the-art Machine Learning for PyTorch, TensorFlow, and JAX.  [2023-10-19]. （原始内容存档于2023-09-27）.
271. ^ Gradio: The New Frontier in Interactive Python Data Apps.  [2023-12-22]. （原始内容存档于2023-12-22）.
272. ^ Python library for easily interacting with trained machine learning models https://pypi.org/project/gradio/ （页面存档备份，存于互联网档案馆）
273. ^ Buniatyan, Davit. Code Understanding Using LangChain. Activeloop. 2023  [2023-12-22]. （原始内容存档于2023-12-16）.
274. ^ Python Discord is a large community focused around the Python programming language.  [2021-01-13]. （原始内容存档于2021-02-01）.
275. ^ Snek — a tiny python-inspired language for embedded computing.
276. ^ Taichi — Productive, portable, and performant GPU programming in Python.  [2025-01-23]. （原始内容存档于2025-01-09）.
277. ^ Coconut — Simple, elegant, Pythonic functional programming.  [2024-09-27]. （原始内容存档于2025-01-20）.

## 延伸閱讀

[编辑]

* John DeNero. Composing Programs, a free online introduction to programming and computer science.  [2020-10-09]. （原始内容存档于2021-01-28）.
* Allen B. Downey. Think Python: How to Think Like a Computer Scientist - 2e. Green Tea Press. 2012  [2023-01-29]. ISBN 978-1-491-93936-9. （原始内容存档于2023-06-04）.
* Obi Ike-Nwosu. Intermediate Python.  [2023-01-29]. （原始内容存档于2023-03-05）.
* Luciano Ramalho. Fluent Python (2nd ed.). O'Reilly Media. 2022  [2023-01-30]. ISBN 978-1-4920-5632-4. （原始内容存档于2023-03-05）.

## 参閲

[编辑]

* 计算机程序设计主题
* 自由软件主题

* 编程语言列表
* Python語法及語義
* Python的歷史
* Python软件列表（英语：List of Python software）

## 外部連接

[编辑]

Python在维基百科的姊妹项目

* 维基共享资源上的多媒体资源
* 维基语录上的名言
* 维基教科书上的教科书和手册
* 维基学院上的学习资源

* 官方网站
* Awesome Python （页面存档备份，存于互联网档案馆）
* Real Python Tutorials （页面存档备份，存于互联网档案馆）
* programingz － Learn Python Programming （页面存档备份，存于互联网档案馆）
* w3schools － Python Tutorial （页面存档备份，存于互联网档案馆）
* ItsMyCode－ Learn Python Programming （页面存档备份，存于互联网档案馆）
* Codecary － Learn Python Programming （页面存档备份，存于互联网档案馆）
* dainikchorcha － Learn Python Programming（页面存档备份，存于互联网档案馆）
* Tutlane - Learn Python Online （页面存档备份，存于互联网档案馆）
* Brmgha - Learn & Challenges Python Online （页面存档备份，存于互联网档案馆）
* AlmaBetter- Python Tutorial （页面存档备份，存于互联网档案馆）

* 查
* 论
* 编

Python

实现|

* CircuitPython（英语：CircuitPython）
* CLPython（英语：CLPython）
* CPython
* Cython
* Jython
* IronPython
* MicroPython
* Numba
* PyPy
* Python for S60（英语：Python for S60）
* Psyco
* Stackless Python
* Shed Skin（英语：Shed Skin）
* Unladen Swallow
* 更多……

IDE|

* Boa
* Eclipse
* Eric Python IDE
* IDLE
* SPE（英语：Stani's Python Editor）
* Ninja-IDE
* PyCharm
* PyDev（英语：PyDev）
* Aptana（英语：Aptana）
* 更多……

专题|

* Web服务器网关接口

* 软件列表
* Python软件基金会
* PyCon

* 查
* 论
* 编

编程语言

范型|

| 过程式|

* FORTRAN
* COBOL
* JOVIAL
* ALGOL 60
* JOSS（英语：JOSS）
* BASIC
* PL/I
* MUMPS（英语：MUMPS）
* ALGOL 68
* Forth
* Pascal
* Turbo Pascal
* C
* Modula-2
* Ada 83
* occam
* Oberon
* Go
* Ballerina（英语：Ballerina (programming language)）

|

面向对象|

* Simula 67
* Smalltalk
* Objective-C
* Eiffel
* Object Pascal
* Delphi
* Self
* CLOS
* Visual Basic
* Gambas
* Ada 95
* Java
* C#
* Vala
* Crystal（英语：Crystal (programming language)）

多范型|

* C++
* Modula-3
* Dylan
* Python
* Lua
* JavaScript
* Ruby
* D
* Factor
* Scala
* F#
* Haxe
* Nim
* Chapel（英语：Chapel (programming language)）
* Rust
* Kotlin
* Dart
* Swift
* Zig
* Ring（英语：Ring (programming language)）
* V（英语：V (programming language)）
* Mojo
* Carbon

函数式|

* LISP
* Scheme
* Common Lisp
* Clojure
* Logo
* APL/`J`
* ML
* Standard ML
* OCaml
* Erlang
* Elixir
* Haskell
* SAC
* Agda
* Idris
* jq
* Gleam（英语：Gleam (programming language)）

逻辑式|

* Prolog
* Datalog
* Mercury
* AnsProlog
* ProbLog（英语：ProbLog）

脚本语言|

| 动态语言|

* SNOBOL
* Icon
* REXX
* Perl
* Raku
* Tcl/Tk
* Python
* Lua
* Ruby
* PHP
* Hack
* CFML（英语：ColdFusion Markup Language）
* REBOL
* Red（英语：Red (programming language)）
* Io
* Julia
* jq

|

Shell语言|

* Unix shell
* sh/ash/dash
* csh/tcsh
* ksh
* bash
* zsh
* rc（英语：rc (Unix shell)）
* AWK
* PowerShell

ECMA-262|

* ECMAScript
* JavaScript
* TypeScript
* CoffeeScript/LiveScript（英语：LiveScript (programming language)）
* Elm
* PureScript
* Reason
* Bosque（英语：Bosque (programming language)）

特定平台|

| .NET|

* C#
* C++/CLI
* F#
* PowerShell
* VB.NET
* Small Basic

|

JVM|

* Java
* AspectJ（英语：AspectJ）
* Scala
* Clojure
* Groovy
* Kotlin

特定领域|

| 科学计算|

* Speakeasy（英语：Speakeasy (computational environment)）
* IDL
* GDL
* Maxima
* Maple
* MATLAB
* Octave
* Scilab
* Wolfram
* R
* Yorick（英语：Yorick (programming language)）
* SageMath
* Julia

|

GPU计算|

* Cg/HLSL
* GLSL/GLSL ES
* Brook（英语：BrookGPU）
* CUDA/PTX（英语：Parallel Thread Execution）
* OpenCL/SPIR-V（英语：Standard Portable Intermediate Representation）
* Futhark
* WGSL（英语：WebGPU Shading Language）

数据查询|

* CODASYL（英语：CODASYL）
* SQL
* PL/SQL
* T-SQL
* SQL/PSM（英语：SQL/PSM）
* xBase（英语：xBase）
* XPath
* XQuery（英语：XQuery）
* GraphQL

可视化|

* Prograph（英语：Prograph）
* Simulink
* LabVIEW
* Orange（英语：Orange (software)）
* KNIME（英语：KNIME）
* Scratch
* Snap!
* App Inventor
* Power Fx

传媒设计|

* SuperCollider
* Pure Data
* AviSynth
* Processing
* ChucK

其它|

* 汇编语言
* APT（英语：APT (programming language)）
* GPSS（英语：GPSS）
* CLIPS（英语：CLIPS）
* AMPL
* dc
* sed
* yacc
* make
* PostScript
* XSLT
* LLVM IR
* WebAssembly
* 深奥的编程语言

* 目录
* 列表
* 按类型排列（英语：List of programming languages by type）
* 历史
* 比较（英语：Comparison of programming languages）
* 时间线

* 查
* 论
* 编

Python web框架

* BlueBream
* Bottle
* CherryPy
* CubicWeb（英语：CubicWeb）
* Django
* FastAPI（英语：FastAPI）
* Flask
* Grok（英语：Grok (web framework)）
* Nagare（英语：Nagare (web framework)）
* Nevow（英语：Nevow）
* Paste（英语：Python Paste）
* Pyjs（英语：Pyjs）
* Pylons
* Pyramid
* Quixote
* Spyce（英语：Spyce (software)）
* TACTIC
* Tornado
* TurboGears
* Webware（英语：Webware for Python）
* web2py
* Zope 2

* 查
* 论
* 编

Python科学软件

* NumPy
* SciPy
* matplotlib
* pandas
* scikit-learn
* scikit-image（英语：scikit-image）
* statsmodels（英语：statsmodels）
* MayaVi（英语：MayaVi）
* 更多

* 查
* 论
* 编

可微分计算

概论|

* 可微分编程
* 自動微分
* 张量微积分
* 信息几何
* 统计流形
* 神经形态工程（英语：Neuromorphic engineering）
* 模式识别
* 运算学习理论（英语：Computational learning theory）
* 归纳偏置

概念|

* 梯度下降
* SGD（英语：Stochastic gradient descent）
* 聚类
* 回归
* 过拟合
* 幻觉
* 对抗（英语：Adversarial machine learning）
* 注意力
* 卷积
* 損失函數
* 反向传播
* 激活函数
* softmax
* sigmoid
* ReLU
* 正则化
* 数据集
* 扩散（英语：Diffusion process）
* 自回归

应用|

* 机器学习
* 人工神经网络
* 深度学习
* 科学计算
* 人工智能
* 語言模型
* 大型语言模型

硬件|

* TPU
* VPU
* IPU（英语：Graphcore）
* 憶阻器
* SpiNNaker（英语：SpiNNaker）

软件库|

* Theano
* TensorFlow
* Keras
* PyTorch
* Caffe
* JAX
* MindSpore（英语：MindSpore）
* Flux.jl（英语：Flux (machine-learning framework)）

* 主题
* 计算机编程
* 技术
* 分类
* 人工神经网络
* 机器学习

* 查
* 论
* 编

软件包管理系统

编译包（二进制）

| Linux
（格式）|

| Dpkg|

* APT
* aptitude
* dselect（英语：dselect）
* Ubuntu 軟體中心

|

RPM|

* YUM
* DNF
* APT-RPM
* Up2date
* Urpmi
* ZYpp

tarball|

* slapt-get（英语：slapt-get）
* slackpkg（英语：slackpkg）
* netpkg（英语：netpkg）
* swaret（英语：swaret）

其他|

* Conary
* Flatpak
* pacman
* PISI（英语：PISI）
* Portage
* Snappy
* Upkg（英语：Upkg）

MacOS|

* Mac App Store

Windows|

* Allmyapps（英语：Allmyapps）
* Cygwin
* Npackd（英语：Npackd）
* NuGet
* Chocolatey
* NSIS
* wpkg（英语：wpkg）
* Windows商店
* winget

TrueOS|

* PBI

Solaris|

* IPS（英语：Image Packaging System）
* Pkgutil（英语：Pkgutil）

嵌入式操作系统|

* Ipkg
* opkg

行動作業系統|

* App Store
* Cydia
* Google Play
* GetJar（英语：GetJar）
* 亚马逊应用商店
* SlideME
* F-Droid
* Windows Phone Store
* Windows商店
* RPM

電子遊戲機|

* PlayStation Store
* Wii商店频道
* Xbox Games商店
* 任天堂eShop
* 任天堂DSi商店

跨平台|

* Dpkg
* IPS（英语：Image Packaging System）
* OpenPKG（英语：OpenPKG）
* pkgsrc（英语：pkgsrc）
* Zero Install（英语：Zero Install）
* IBM SmartCloud Enterprise（英语：IBM cloud computing#IBM SmartCloud）
* Nix
* wpkg（英语：wpkg）
* Steam

插件|

| Google Chrome|

* Chrome网上应用店

|

Firefox|

* 附加组件

Z/OS|

* SMP/E（英语：SMP/E）

非编译包（源代码）

| Linux|

* ABS
* APT
* Compile
* Homebrew
* Portage
* Sorcery（英语：Sourcemage#Sorcery）

|

MacOS|

* Fink（英语：Fink）
* MacPorts
* Homebrew
* pkgsrc（英语：pkgsrc）

混合系统|

* BitBake
* FreeBSD Ports
* MacPorts
* pkgsrc（英语：pkgsrc）
* Ports

元包管理器（英语：Meta package managers）|

* Autopackage
* AppImage
* Zero Install（英语：Zero Install）
* PackageKit

Python|

* PyPI
* pip
* easyinstall（英语：Setuptools#EasyInstall）
* PyPM（英语：Python Package Manager）
* Anaconda
* Enthought Canopy（英语：Enthought）

* 列表（英语：List of software package management systems）
* 分类
* 共享资源

* 查
* 论
* 编

自由及开放源代码软件

常见概念与条目|

自由软件及其定義、其他称谓（英语：Alternative terms for free software） · 與封閉原始碼的比較（英语：Comparison of open source and closed source） · 开源软件及其开发（英语：Open-source software development） · 自由软件托管服务比较 · 自由软件项目列表（英语：List of free software project directories）与软件列表 · “免费”与“自由”的差别（英语：Gratis versus libre） · 長期支援 · 自由软件大纲（英语：Outline of free software）

操作系统（内核）|

AROS Research Operating System（英语：AROS） · BSD · Darwin · FreeDOS · GNU Hurd · Haiku · Inferno · Linux · Mach · Minix · OpenSolaris · Plan 9 · ReactOS · Symbian

软件列表|

软件开发（英语：Comparison of open-source programming language licensing） · 生物信息学（英语：List of open-source bioinformatics software） · 数学（英语：List of open-source software for mathematics） · 文字处理软件 · 音频（英语：Comparison of free software for audio） · 商业软件（英语：List of commercial open-source applications and services）

歷史与运动|

GNU · Haiku · Linux · Mozilla (Application Suite · Firefox · Thunderbird) · 自由软件运动 · 开源软件运动（英语：Open-source software movement） · 大事记（英语：List of free-software events）

组织（英语：List of free and open-source software organizations）与社群|

Android开源项目 · Apache软件基金会 · Blender基金会 · Eclipse基金会 · freedesktop.org · 自由软件基金会 (歐洲 · 印度 · 拉丁美洲) · FSMI · GNOME基金会 · GNU Project · Google Code · KDE e.V. · Linux基金會 · Mozilla基金會 · 开源地理空间基金会 · 开放源代码促进会 · SourceForge · Symbian基金會 · VideoLAN组织 · 维基媒体基金会 · Xiph.Org基金會 · XMPP標準基金會 · X.Org基金會 · 文檔基金會 · 軟體自由法律中心 · 开放原子基金会

許可證|

* Apache
* AFL
* Artistic
* APSL
* Boost
* BSD
* 自由软件基金会
* GNU GPL
* GNU LGPL
* GNU AGPL
* ISC
* MIT
* MPL
* Python
* Python软件基金会许可证
* zlib
* WTFPL
* 反996许可证

| 类型与标准|

* 自由及開放原始碼軟體許可證比較
* 贡献者许可证协议（英语：Contributor License Agreement）
* Copyleft
* Debian自由软件指导方针
* 自由文化作品定義
* 自由許可證（英语：Free license）
* 自由软件定义
* 开源定义
* 寬鬆自由軟體授權條款
* 公有领域
* Viral license（英语：Viral license）

|

挑戰|

FUD · 擁抱、擴充功能再消滅 · 二進制blob · 数字版权管理 · 自由及開放原始碼顯示卡驅動程式（英语：Free and open-source graphics device driver） · 授權擴散（英语：License proliferation） · Mozilla 软件品牌重塑（英语：Mozilla Corporation software rebranded by the Debian project） · 專有軟體 · SCO-Linux爭議 · 安全性 · 軟體專利 · 硬體限制 · 可信计算 · 对 GPL 的有关批评

其他|

Linux發行版 · 分叉 (软件开发) · 微軟開放規範承諾（英语：Microsoft Open Specification Promise） · 共享原始碼 · 《操作系统革命》

分类 · 维基共享资源 · 主题
*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板