On this page
Glossary
>>>
- 交互式 Shell 程序的默认 Python 提示符。经常看到可以在解释器中交互执行的代码示例。
...
- Importing 缩进代码块的代码时,在Pair匹配的左右定界符(括号,方括号,花括号或三引号)内或指定装饰符后,交互式 Shell 程序的默认 Python 提示符。
2to3
- pass处理大多数不兼容问题来try将 Python 2.x 代码转换为 Python 3.x 代码的工具,这些不兼容问题可以pass分析源代码并遍历解析树来检测。
2 to3 在标准库中以lib2to3的形式提供;提供一个独立的入口点作为Tools/scripts/2to3
。参见2 to3-自动 Python 2 到 3 代码翻译。
抽象 Base Class
- 抽象 Base Class pass提供一种定义接口的方式来补充duck-typing,而hasattr()之类的其他技术可能笨拙或微妙地错误(例如magic methods)。 ABC 引入了虚拟子类,这些子类不是从类继承而来的,但仍被isinstance()和issubclass()识别;请参阅abc模块文档。 Python 随附了许多内置的 ABC,用于数据结构(在collections模块中),数字(在numbers模块中)和流(在io模块中)。您可以使用abc模块创建自己的 ABC。
argument
-
- keyword arguments *:在函数调用中以标识符(例如
name=
)开头的参数,或以**
开头的字典中的值形式传递的参数。例如,在对complex()的以下调用中,3
和5
都是关键字参数:
- keyword arguments *:在函数调用中以标识符(例如
complex(real=3, imag=5)
complex(**{'real': 3, 'imag': 5})
-
- positional arguments *:不是关键字参数的参数。位置参数可以出现在参数列表的开头和/或作为iterable的元素传递,并以
*
开头。例如,3
和5
都是以下调用中的位置参数:
- positional arguments *:不是关键字参数的参数。位置参数可以出现在参数列表的开头和/或作为iterable的元素传递,并以
complex(3, 5)
complex(*(3, 5))
将参数分配给函数体内的命名局部变量。有关 Management 此分配的规则,请参见Calls部分。从语法上讲,任何表达式都可以用来表示参数。评估值分配给局部变量。
另请参见parameter词汇表条目和参数和参数之间的区别上的常见问题。
attribute
- 与对象关联的值,该名称使用点分表达式按名称引用。例如,如果对象* o 具有属性 a ,则将其称为 o.a *。
BDFL
- 善意的生命独裁者,又名吉多·范·罗苏姆(Guido van Rossum),Python 的创建者。
bytes-like object
- 支持buffer protocol的对象,例如str,bytearray或memoryview。类似字节的对象可用于需要二进制数据的各种操作,例如压缩,保存到二进制文件或pass套接字发送。一些操作需要二进制数据是可变的,在这种情况下,并非所有类似字节的对象都可以应用。
bytecode
- Python 源代码被编译为字节码,这是 CPython 解释器中 Python 程序的内部表示形式。字节码也缓存在
.pyc
和.pyo
文件中,因此第二次执行同一文件更快(可以避免从源代码重新编译到字节码)。据说这种“中间语言”在virtual machine上运行,该virtual machine执行与每个字节码相对应的机器代码。请注意,字节码不能在不同的 Python 虚拟机之间工作,也不能在 Python 版本之间保持稳定。
- Python 源代码被编译为字节码,这是 CPython 解释器中 Python 程序的内部表示形式。字节码也缓存在
字节码指令列表可在dis 模块的文档中找到。
class
- 用于创建用户定义对象的模板。类定义通常包含对类实例进行操作的方法定义。
classic class
- 不继承自object的任何类。参见new-style class。经典类已在 Python 3 中删除。
coercion
- 在涉及相同类型的两个参数的操作期间,将一种类型的实例隐式转换为另一种实例。例如,
int(3.15)
将浮点数转换为整数3
,但在3+4.5
中,每个参数的类型不同(一个 int,一个浮点),并且必须将两个参数都转换为相同的类型,否则它们将被添加。提出TypeError
。可以使用coerce
内置函数来执行两个操作数之间的强制转换。因此,3+4.5
等效于调用operator.add(*coerce(3, 4.5))
并导致operator.add(3.0, 4.5)
。如果没有强制,则即使兼容类型的所有参数都必须由程序员标准化为相同的值,例如float(3)+4.5
而不是3+4.5
。
- 在涉及相同类型的两个参数的操作期间,将一种类型的实例隐式转换为另一种实例。例如,
complex number
context manager
CPython
- Python 编程语言的规范实现,分布在python.org上。必要时使用术语“ CPython”将这种实现与其他实现(例如 Jython 或 IronPython)区分开来。
decorator
- 返回另一个函数的函数,通常使用
@wrapper
语法作为函数转换应用。装饰器的常见示例是classmethod()和staticmethod()。
- 返回另一个函数的函数,通常使用
装饰器语法只是语法糖,以下两个函数定义在语义上是等效的:
def f(...):
...
f = staticmethod(f)
@staticmethod
def f(...):
...
类存在相同的概念,但在该类中较少使用。有关装饰器的更多信息,请参见function definitions和class definitions的文档。
- descriptor
有关 Descriptors 的方法的更多信息,请参见Implementing Descriptors。
dictionary
dictionary view
- 从dict.viewkeys(),dict.viewvalues()和dict.viewitems()返回的对象称为字典视图。它们提供了字典条目的动态视图,这意味着当字典更改时,该视图会反映这些更改。要强制字典视图成为完整列表,请使用
list(dictview)
。参见字典视图对象。
- 从dict.viewkeys(),dict.viewvalues()和dict.viewitems()返回的对象称为字典视图。它们提供了字典条目的动态视图,这意味着当字典更改时,该视图会反映这些更改。要强制字典视图成为完整列表,请使用
docstring
- 字符串 Literals,显示为类,函数或模块中的第一个表达式。当执行套件时会忽略该套件,但编译器会识别该套件,并将其放入封闭类,函数或模块的
__doc__
属性中。由于可以pass内省使用,因此它是记录对象的规范位置。
- 字符串 Literals,显示为类,函数或模块中的第一个表达式。当执行套件时会忽略该套件,但编译器会识别该套件,并将其放入封闭类,函数或模块的
duck-typing
- 一种编程样式,它不会查看对象的类型来确定它是否具有正确的接口;而是简单地调用或使用方法或属性(“如果它看起来像鸭子,而象鸭子一样,则一定是鸭子.”)pass强调接口而不是特定类型,精心设计的代码pass允许多态替换。鸭式 Importing 避免使用type()或isinstance()进行测试。 (但是请注意,可以使用抽象 Base Class来补充鸭式 Importing。)相反,它通常采用hasattr()测试或EAFP编程。
EAFP
expression
extension module
- 用 C 或 C 编写的模块,使用 Python 的 C API 与内核和用户代码进行交互。
file object
- 向基础资源公开面向文件的 API(使用诸如
read()
或write()
之类的方法)的对象。根据对象的创建方式,文件对象可以介导对实际磁盘文件或其他类型的存储或通信设备(例如标准 Importing/输出,内存缓冲区,套接字,管道等)的访问。 。文件对象也称为类似文件的对象或流。
- 向基础资源公开面向文件的 API(使用诸如
实际上,文件对象分为三类:原始二进制文件,缓冲的二进制文件和文本文件。它们的接口在io模块中定义。创建文件对象的规范方法是使用open()函数。
file-like object
- file object的同义词。
finder
floor division
- 四舍五入到最接近的整数的 math 除法。楼层划分运算符是
//
。例如,与 float true 除法返回的2.75
相比,表达式11 // 4
的求值为2
。请注意,(-11) // 4
是-3
,因为它是-2.75
向下舍入的。参见 PEP 238。
- 四舍五入到最接近的整数的 math 除法。楼层划分运算符是
function
- 一系列向调用者返回一些值的语句。也可以将其传递给零个或多个arguments,以用于执行正文。另请参见parameter,method和Function definitions部分。
future
- 伪模块,程序员可以使用其来启用与当前解释器不兼容的新语言Function。例如,表达式
11/4
当前计算结果为2
。如果执行该模块的模块pass执行以下命令启用了“真除法”:
- 伪模块,程序员可以使用其来启用与当前解释器不兼容的新语言Function。例如,表达式
from __future__ import division
表达式11/4
的计算结果为2.75
。pass导入future模块并评估其变量,您可以看到新Function何时首次添加到语言中以及何时将成为默认Function:
>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
garbage collection
- 当不再使用内存时释放内存的过程。 Python pass引用计数和能够检测和break引用周期的循环垃圾收集器执行垃圾收集。
generator
generator expression
>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
285
GIL
- See 全局解释器锁.
全局解释器锁
但是,某些扩展模块(标准的或第三方的)被设计为在执行诸如压缩或散列之类的计算密集型任务时释放 GIL。另外,在执行 I/O 时,始终释放 GIL。
过去创建“自由线程”解释器(一种以更精细的粒度锁定共享数据的解释器)的努力并未成功,因为在常见的单处理器情况下性能会受到影响。相信克服该性能问题将使实施更加复杂,因此维护成本更高。
- hashable
散列性使对象可用作字典键和 set 成员,因为这些数据结构在内部使用散列值。
Python 的所有不可变内置对象都是可哈希的,而没有可变容器(例如列表或字典)是可哈希的。作为用户定义类实例的对象默认情况下是可哈希的;它们都比较不相等(除了它们本身),并且它们的哈希值是从id()派生的。
IDLE
- Python 的集成开发环境。 IDLE 是 Python 的标准发行版附带的基本编辑器和解释器环境。
immutable
- 具有固定值的对象。不可变的对象包括数字,字符串和 Tuples。这样的对象不能改变。如果必须存储其他值,则必须创建一个新对象。它们在需要恒定哈希值(例如,作为字典中的键)的地方起着重要作用。
integer division
importing
- 一个模块中的 Python 代码可用于另一模块中的 Python 代码的过程。
importer
interactive
- Python 具有交互式解释器,这意味着您可以在解释器提示符下 Importing 语句和表达式,立即执行它们并查看其结果。只需启动不带任何参数的
python
(可能是从计算机的主菜单中选择它)。这是测试新想法或检查模块和包的一种非常有效的方法(请记住help(x)
)。
- Python 具有交互式解释器,这意味着您可以在解释器提示符下 Importing 语句和表达式,立即执行它们并查看其结果。只需启动不带任何参数的
interpreted
- 与已编译的语言相反,Python 是一种解释性语言,尽管由于字节码编译器的存在,两者之间的区别可能会很模糊。这意味着源文件可以直接运行,而无需显式创建然后运行的可执行文件。尽管解释型语言的程序运行通常也较慢,但它们通常具有比编译型语言更短的开发/调试周期。另请参见interactive。
iterable
- 一个能够一次返回其成员的对象。可迭代的示例包括所有序列类型(例如
list
,str和tuple)和一些非序列类型(例如dict和file)以及使用iter()或getitem()方法定义的任何类的对象。可迭代变量可用于for循环以及需要序列的其他许多地方(zip(),map()…)。将可迭代对象作为参数传递给内置函数iter()时,它将返回对象的迭代器。此迭代器适合在一组值上传递一次。使用可迭代对象时,通常不必自己调用iter()或处理迭代器对象。for
语句自动为您执行此操作,并创建一个临时的未命名变量来在循环持续时间内保存迭代器。另请参见iterator,sequence和generator。
- 一个能够一次返回其成员的对象。可迭代的示例包括所有序列类型(例如
iterator
- 表示数据流的对象。重复调用迭代器的next()方法将返回流中的后续项。如果没有更多数据可用,则会引发StopIteration异常。此时,迭代器对象已用尽,对其next()方法的任何进一步调用都只会再次引发StopIteration。迭代器必须具有返回迭代器对象本身的iter()方法,因此每个迭代器也是可迭代的,并且可以在接受其他可迭代的大多数地方使用。一个值得注意的 exception 是try多次迭代遍历的代码。每次将容器对象传递给iter()函数或在for循环中使用它时,容器对象(例如
list
)都会产生一个新的新迭代器。使用迭代器try执行此操作将仅返回上一次迭代过程中使用的相同的耗尽的迭代器对象,使其看起来像一个空容器。
- 表示数据流的对象。重复调用迭代器的next()方法将返回流中的后续项。如果没有更多数据可用,则会引发StopIteration异常。此时,迭代器对象已用尽,对其next()方法的任何进一步调用都只会再次引发StopIteration。迭代器必须具有返回迭代器对象本身的iter()方法,因此每个迭代器也是可迭代的,并且可以在接受其他可迭代的大多数地方使用。一个值得注意的 exception 是try多次迭代遍历的代码。每次将容器对象传递给iter()函数或在for循环中使用它时,容器对象(例如
可以在Iterator Types中找到更多信息。
- key function
- 键函数或归类函数是可调用的,可返回用于排序或排序的值。例如,locale.strxfrm()用于产生一个排序键,该键知道特定于语言环境的排序约定。
Python 中的许多工具都接受关键Function来控制元素的排序或分组方式。它们包括min(),max(),sorted(),list.sort()
,heapq.nsmallest(),heapq.nlargest()和itertools.groupby()。
有几种创建键Function的方法。例如。 str.lower()方法可用作区分大小写的排序的关键Function。或者,可以从_表达式(例如lambda r: (r[0], r[2])
)构建临时键Function。此外,operator模块提供了三个关键函数构造函数:attrgetter(),itemgetter()和methodcaller()。有关如何创建和使用关键Function的示例,请参见排序方式。
keyword argument
- See argument.
lambda
- 一个由单个expression组成的匿名内联函数,在调用该函数时会对其进行评估。创建 lambda 函数的语法为
lambda [parameters]: expression
- 一个由单个expression组成的匿名内联函数,在调用该函数时会对其进行评估。创建 lambda 函数的语法为
LBYL
在多线程环境中,LBYL 方法可能会在“外观”和“跳跃”之间引入竞争条件。例如,如果另一个线程在测试之后但在查找之前从* mapping 中删除 key *,则代码if key in mapping: return mapping[key]
可能会失败。可以使用锁或使用 EAFP 方法解决此问题。
list
- 内置 Python sequence。尽管它的名称是 O(1),但它更类似于其他语言中的数组而不是链接列表。
list comprehension
- 一种处理序列中所有或部分元素并返回包含结果的列表的紧凑方法。
result = ["0x%02x" % x for x in range(256) if x % 2 == 0]
生成的字符串列表包含偶数十六进制数字(0x ..),范围从 0 到 255.if子句是可选的。如果Ellipsis,则处理range(256)
中的所有元素。
- 一种处理序列中所有或部分元素并返回包含结果的列表的紧凑方法。
loader
magic method
- special method的非正式同义词。
mapping
- 一个支持任意键查找并实现Mapping或MutableMapping 抽象 Base Class中指定的方法的容器对象。示例包括dict,collections.defaultdict,collections.OrderedDict和collections.Counter。
metaclass
- 一类的一类。类定义创建类名称,类字典和 Base Class 列表。元类负责接受这三个参数并创建类。大多数面向对象的编程语言都提供默认实现。使 Python 与众不同的是,可以创建自定义元类。大多数用户从不需要此工具,但是当需要时,元类可以提供强大而优雅的解决方案。它们已用于记录属性访问,增加线程安全性,跟踪对象创建,实现单例以及许多其他任务。
可以在定制类创建中找到更多信息。
method
- 在类体内定义的函数。如果调用该类的实例的属性,则该方法将获得该实例对象的第一个argument(通常称为
self
)。参见function和nested scope。
- 在类体内定义的函数。如果调用该类的实例的属性,则该方法将获得该实例对象的第一个argument(通常称为
方法解析 Sequences
- 方法解析 Sequences 是查找期间在 Base Class 中搜索成员的 Sequences。有关自 2.3 版本以来 Python 解释器使用的算法的详细信息,请参见Python 2.3 方法解析 Sequences。
module
- 用作 Python 代码的组织单位的对象。模块具有一个包含任意 Python 对象的名称空间。passimporting的过程将模块加载到 Python 中。
另请参见package。
MRO
- See 方法解析 Sequences.
mutable
named tuple
- 任何也可以使用命名属性访问其可索引元素的类似 Tuples 的类(例如time.localtime()返回一个类似 tuple 的对象,其中可以使用诸如
t[0]
的索引或诸如t.tm_year
的命名属性来访问* year *)。
- 任何也可以使用命名属性访问其可索引元素的类似 Tuples 的类(例如time.localtime()返回一个类似 tuple 的对象,其中可以使用诸如
命名 Tuples 可以是内置类型,例如time.struct_time,也可以使用常规的类定义来创建。也可以使用工厂函数collections.namedtuple()创建Function齐全的名为 tuple 的 Tuples。后一种方法自动提供了额外的Function,例如像Employee(name='jones', title='programmer')
这样的自文档表示。
namespace
- 变量存储的位置。命名空间被实现为字典。对象(在方法中)具有本地,全局和内置名称空间以及嵌套名称空间。命名空间pass防止命名冲突来支持模块化。例如,函数
__builtin__.open()
和os.open()pass它们的名称空间来区分。命名空间还可以pass清楚地说明哪个模块实现了Function来提高可读性和可维护性。例如,写random.seed()或itertools.izip()可以清楚地表明这些Function分别由random和itertools模块实现。
- 变量存储的位置。命名空间被实现为字典。对象(在方法中)具有本地,全局和内置名称空间以及嵌套名称空间。命名空间pass防止命名冲突来支持模块化。例如,函数
nested scope
- 在封闭定义中引用变量的能力。例如,在另一个函数内部定义的函数可以引用外部函数中的变量。请注意,嵌套作用域仅用于参考而不能用于赋值,因为它将始终写入最内部作用域。相反,局部变量在最内部的范围内都可以读写。同样,全局变量读取和写入全局名称空间。
new-style class
- 从object继承的任何类。这包括
list
和dict之类的所有内置类型。只有new-style类才能使用 Python 的较新的通用Function,例如__slots__
,Descriptors,属性和getattribute()。
- 从object继承的任何类。这包括
可以在New-style and classic classes中找到更多信息。
object
- 具有状态(属性或值)和定义的行为(方法)的任何数据。也是new-style class的finally Base Class。
package
- Python module,可以包含子模块或递归地包含子包。从技术上讲,包是具有
__path__
属性的 Python 模块。
- Python module,可以包含子模块或递归地包含子包。从技术上讲,包是具有
parameter
-
- positional-or-keyword :指定可以passpositionally或keyword argument传递的参数。这是默认的参数类型,例如下面的 foo 和 bar *:
def func(foo, bar=None): ...
-
- positional-only *:指定只能由位置提供的参数。 Python 没有用于定义仅位置参数的语法。但是,某些内置函数具有仅位置参数(例如abs())。
-
- var-positional :指定可以提供任意 Sequences 的位置参数(除了已被其他参数接受的任何位置参数)。可以pass在参数名称前加上
*
来定义这样的参数,例如下面的 args *:
- var-positional :指定可以提供任意 Sequences 的位置参数(除了已被其他参数接受的任何位置参数)。可以pass在参数名称前加上
def func(*args, **kwargs): ...
-
- var-keyword :指定可以提供任意多个关键字参数(除了已被其他参数接受的任何关键字参数)。可以pass在参数名称前加上
**
来定义此类参数,例如,在以上示例中为 kwargs *。
- var-keyword :指定可以提供任意多个关键字参数(除了已被其他参数接受的任何关键字参数)。可以pass在参数名称前加上
参数可以指定可选参数和必需参数,以及一些可选参数的默认值。
另请参见argument词汇表条目,参数和参数之间的区别上的 FAQ 问题和Function definitions部分。
- PEP
- Python 增强建议。 PEP 是一个设计文档,向 Python 社区提供信息,或描述 Python 或其过程或环境的新Function。 PEP 应提供简明的技术规范和建议Function的原理。
PEP 旨在成为主要机制,用于提出主要的新Function,收集社区对某个问题的意见以及记录已纳入 Python 的设计决策。 PEP 作者负责在社区内构建共识并记录不同意见。
See PEP 1.
positional argument
- See argument.
Python 3000
- Python 3.x 发行行的昵称(在不久的将来,当版本 3 发行时就产生了这个昵称.)这也简称为“ Py3k”。
Pythonic
- 与 Python 语言最常见的习惯用法很相近的概念或一段代码,而不是使用其他语言通用的概念来实现代码。例如,Python 中的一个常见用法是使用for语句遍历可迭代对象的所有元素。许多其他语言没有这种类型的构造,因此不熟悉 Python 的人有时会改用数字计数器:
for i in range(len(food)):
print food[i]
与更清洁的 Pythonic 方法相反:
for piece in food:
print piece
reference count
- 对对象的引用数。当对象的引用计数降至零时,将对其进行释放。引用计数通常对 Python 代码不可见,但是它是CPython实现的关键元素。 sys模块定义了getrefcount()函数,程序员可以调用该函数返回特定对象的引用计数。
slots
- new-style class内部的语句pass预先语句实例属性的空间并消除实例字典来节省内存。尽管这项技术很受欢迎,但要正确使用它有些棘手,最适合保留在内存至关重要的应用程序中有大量实例的罕见情况。
sequence
slice
- 通常包含sequence的一部分的对象。使用下标符号
[]
创建一个切片,当给出多个时,例如在variable_name[1:3:5]
中,数字之间用冒号表示。方括号(下标)表示法在内部使用slice个对象(或在较早的版本中为getslice()和setslice())。
- 通常包含sequence的一部分的对象。使用下标符号
special method
- Python 隐式调用的一种方法,用于对类型(例如加法)执行特定操作。此类方法的名称以双下划线开头和结尾。 特殊方法名称中记录了特殊方法。
statement
- 语句是套件(代码的“块”)的一部分。语句可以是expression,也可以是带有关键字的多个结构之一,例如if,while或for。
struct sequence
- 具有命名元素的 Tuples。结构序列公开了一个类似于named tuple的接口,因为可以pass索引或作为属性来访问元素。但是,它们没有任何命名的 Tuples 方法,例如_make()或_asdict()。结构序列的示例包括sys.float_info和返回值os.stat()。
triple-quoted string
- 由引号(“)或撇号(')的三个实例绑定的字符串。尽管它们不提供单引号字符串不具备的任何Function,但由于多种原因,它们很有用。它们允许您可以在字符串中包含未转义的单引号和双引号,并且它们可以跨越多行而无需使用延续字符,这使得它们在编写文档字符串时特别有用。
type
- Python 对象的类型决定了它是哪种对象。每个对象都有一个类型。对象的类型可以pass其class属性进行访问,也可以使用
type(obj)
进行检索。
- Python 对象的类型决定了它是哪种对象。每个对象都有一个类型。对象的类型可以pass其class属性进行访问,也可以使用
universal newlines
- 一种解释文本流的方式,其中将以下所有内容都视为行尾:Unix 行尾约定
'\n'
,Windows 约定'\r\n'
和旧的 Macintosh 约定'\r'
。另请参见 PEP 278和 PEP 3116以及str.splitlines()。
- 一种解释文本流的方式,其中将以下所有内容都视为行尾:Unix 行尾约定
virtual environment
- 一种协作隔离的运行时环境,该环境允许 Python 用户和应用程序安装和升级 Python 分发软件包,而不会干扰在同一系统上运行的其他 Python 应用程序的行为。
virtual machine
- 完全由软件定义的计算机。 Python 的虚拟机执行字节码编译器发出的bytecode。
禅宗 Python
- 列出有助于理解和使用该语言的 Python 设计原则和 IDEA。可以在交互式提示符下键入“
import this
”来找到列表。
- 列出有助于理解和使用该语言的 Python 设计原则和 IDEA。可以在交互式提示符下键入“