🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](lexical_analysis.xhtml "2. 词法分析") | - [上一页](index.xhtml "Python 语言参考") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python 语言参考](index.xhtml) » - $('.inline-search').show(0); | # 1. 概述 本参考手册是对 Python 编程语言的描述。并不适宜作为教程使用。 我希望尽可能地保证内容精确无误,但还是选择使用自然词句进行描述,正式的规格定义仅用于句法和词法解析。这样应该能使文档对于普通人来说更易理解,但也可能导致一些歧义。因此,如果你是来自火星并且想凭借这份文档把 Python 重新实现一遍,也许有时需要自行猜测,实际上最终大概会得到一个十分不同的语言。而在另一方面,如果你正在使用 Python 并且想了解有关该语言特定领域的精确规则,你应该能够在这里找到它们。如果你希望查看对该语言更正式的定义,也许你可以花些时间自己写上一份 --- 或者发明一台克隆机器 :-) 在语言参考文档里加入过多的实现细节是很危险的 --- 具体实现可能发生改变,对同一语言的其他实现可能使用不同的方式。而在另一方面,CPython 是得到广泛使用的 Python 实现 (然而其他一些实现的拥护者也在增加),其中的特殊细节有时也值得一提,特别是当其实现方式导致额外的限制时。因此,你会发现在正文里不时会跳出来一些简短的 "实现注释"。 每种 Python 实现都带有一些内置和标准的模块。相关的文档可参见 [Python 标准库](../library/index.xhtml#library-index) 索引。少数内置模块也会在此提及,如果它们同语言描述存在明显的关联。 ## 1.1. 其他实现 虽然官方 Python 实现差不多得到最广泛的欢迎,但也有一些其他实现对特定领域的用户来说更具吸引力。 知名的实现包括: CPython这是最早出现并持续维护的 Python 实现,以 C 语言编写。新的语言特性通常在此率先添加。 Jython以 Java 语言编写的 Python 实现。此实现可以作为 Java 应用的一个脚本语言,或者可以用来创建需要 Java 类库支持的应用。想了解更多信息可访问 [Jython 网站](http://www.jython.org/) \[http://www.jython.org/\]。 Python for .NET此实现实际上使用了 CPython 实现,但是属于 .NET 托管应用并且可以引入 .NET 类库。它的创造者是 Brian Lloyd。想了解详情可访问 [Python for .NET 主页](https://pythonnet.github.io/) \[https://pythonnet.github.io/\]。 IronPython另一个 .NET 的 Python 实现,与 Python.NET 不同点在于它是生成 IL 的完全 Python 实现,并且将 Python 代码直接编译为 .NET 程序集。它的创造者就是当初创造 Jython 的 Jim Hugunin。想了解详情可访问 [IronPython 网站](http://ironpython.net/) \[http://ironpython.net/\]。 PyPy完全使用 Python 语言编写的 Python 实现。它支持多个其他实现所没有的高级特性,例如非栈式支持和 JIT 编译器等。此项目的目标之一是通过允许方便地修改解释器 (因为它是用 Python 编写的),鼓励该对语言本身进行试验。想了解详情可访问 [PyPy 项目主页](http://pypy.org/) \[http://pypy.org/\]。 以上这些实现都可能在某些方面与此参考文档手册的描述有所差异,或是引入了超出标准 Python 文档范围的特定信息。请参考它们各自的专门文档,以确定你正在使用的这个实现有哪些你需要了解的东西。 ## 1.2. 标注 句法和词法解析的描述采用经过改进的 BNF 语法标注。这包含以下定义样式: ``` name ::= lc_letter (lc_letter | "_")* lc_letter ::= "a"..."z" ``` 第一行表示 `name` 是一个 `lc_letter` 之后跟零个或多个 `lc_letter` 和下划线。而一个 `lc_letter` 则是任意单个 `'a'` 至 `'z'` 字符。(实际上在本文档中始终采用此规则来定义词法和语法规则的名称。) 每条规则的开头是一个名称 (即该规则所定义的名称) 加上 `::=`。竖线 (`|`) 被用来分隔可选项;它是此标注中最灵活的操作符。星号 (`*`) 表示前一项的零次或多次重复;类似地,加号 (`+`) 表示一次或多次重复,而由方括号括起的内容 (`[ ]`) 表示出现零次或一次 (或者说,这部分内容是可选的)。`*` 和 `+` 操作符的绑定是最紧密的;圆括号用于分组。固定字符串包含在引号内。空格的作用仅限于分隔形符。每条规则通常为一行;有许多个可选项的规则可能会以竖线为界分为多行。 在词法定义中 (如上述示例),还额外使用了两个约定: 由三个点号分隔的两个本义字符表示在指定 (开) 区间范围内的任意单个 ASCII 字符。由尖括号 (`<...>`) 括起来的内容是对于所定义符号的非正式描述;即可以在必要时用来说明 '控制字符' 的意图。 虽然所用的标注方式几乎相同,但是词法定义和句法定义是存在很大区别的: 词法定义作用于输入源中单独的字符,而句法定义则作用于由词法分析所生成的形符流。在下一章节 ("词法分析") 中使用的 BNF 全部都是词法定义;在之后的章节中使用的则是句法定义。 ### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](lexical_analysis.xhtml "2. 词法分析") | - [上一页](index.xhtml "Python 语言参考") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python 语言参考](index.xhtml) » - $('.inline-search').show(0); | © [版权所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 软件基金会是一个非盈利组织。 [请捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [发现了问题](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 创建。