Python术语对照表
交互式终端中默认的 Python 提示符。往往会显示于能以交互方式在解释器里执行的样例代码之前。
…
可以是指:交互式终端中输入特殊代码行时默认的 Python 提示符,包括:缩进的代码块,成对的分隔符之内(圆括号、方括号、花括号或三重引号),或是指定一个装饰器之后。Ellipsis 内置常量。
2to3
一个将 Python 2.x 代码转换为 Python 3.x 代码的工具,能够处理大部分通过解析源码并遍历解析树可检测到的不兼容问题。2to3 包含在标准库中,模块名为 lib2to3;并提供一个独立入口点 Tools/scripts/2to3。参见 2to3 - 自动将 Python 2 代码转为 Python 3 代码。
abstract base class – 抽象基类
抽象基类简称 ABC,是对 duck-typing 的补充,它提供了一种定义接口的新方式,相比之下其他技巧例如 hasattr() 显得过于笨拙或有微妙错误(例如使用 魔术方法)。ABC 引入了虚拟子类,这种类并非继承自其他类,但却仍能被 isinstance() 和 issubclass() 所认可;详见 abc 模块文档。Python 自带许多内置的 ABC 用于实现数据结构(在 collections.abc 模块中)、数字(在 numbers 模块中)、流(在 io 模块中)、导入查找器和加载器(在 importlib.abc 模块中)。你可以使用 abc 模块来创建自己的 ABC。
annotation – 标注
关联到某个变量、类属性、函数形参或返回值的标签,被约定作为 type hint 来使用。局部变量的标注在运行时不可访问,但全局变量、类属性和函数的标注会分别存放模块、类和函数的 annotations 特殊属性中。参见 variable annotation、function annotation、PEP 484 和 PEP 526,对此功能均有介绍。
argument – 参数
在调用函数时传给 function (或 method )的值。参数分为两种:关键字参数: 在函数调用中前面带有标识符(例如 name=)或者作为包含在前面带有 ** 的字典里的值传入。举例来说,3 和 5 在以下对 complex() 的调用中均属于关键字参数:complex(real=3, imag=5) complex(**{‘real’: 3, ‘imag’: 5}) 位置参数: 不属于关键字参数的参数。位置参数可出现于参数列表的开头以及/或者作为前面带有 * 的 iterable 里的元素被传入。举例来说,3 和 5 在以下调用中均属于位置参数:complex(3, 5) complex(*(3, 5)) 参数会被赋值给函数体中对应的局部变量。有关赋值规则参见 调用 一节。根据语法,任何表达式都可用来表示一个参数;最终算出的值会被赋给对应的局部变量。另参见 parameter 术语表条目,常见问题中 参数与形参的区别 以及 PEP 362。
asynchronous context manager – 异步上下文管理器
此种对象通过定义 aenter() 和 aexit() 方法来对 async with 语句中的环境进行控制。由 PEP 492 引入。
asynchronous generator – 异步生成器
返回值为 asynchronous generator iterator 的函数。它与使用 async def 定义的协程函数很相似,不同之处在于它包含 yield 表达式以产生一系列可在 async for 循环中使用的值。此术语通常是指异步生成器函数,但在某些情况下则可能是指 异步生成器迭代器。如果需要清楚表达具体含义,请使用全称以避免歧义。一个异步生成器函数可能包含 await 表达式或者 async for 以及 async with 语句。
asynchronous generator iterator – 异步生成器迭代器
asynchronous generator 函数所创建的对象。此对象属于 asynchronous iterator,当使用 anext() 方法调用时会返回一个可等待对象来执行异步生成器函数的代码直到下一个 yield 表达式。每个 yield 会临时暂停处理,记住当前位置执行状态 (包括局部变量和挂起的 try 语句)。当该 异步生成器迭代器 与其他 anext() 返回的可等待对象有效恢复时,它会从离开位置继续执行。参见 PEP 492 和 PEP 525。
asynchronous iterable – 异步可迭代对象
可在 async for 语句中被使用的对象。必须通过它的 aiter() 方法返回一个 asynchronous iterator。由 PEP 492 引入。
asynchronous iterator – 异步迭代器
实现了 aiter() 和 anext() 方法的对象。anext 必须返回一个 awaitable 对象。async for 会处理异步迭代器的 anext() 方法所返回的可等待对象,直到其引发一个 StopAsyncIteration 异常。由 PEP 492 引入。
attribute – 属性
关联到一个对象的值,可以使用点号表达式通过其名称来引用。例如,如果一个对象 o 具有一个属性 a,就可以用 o.a 来引用它。
awaitable – 可等待对象
能在 await 表达式中使用的对象。可以是 coroutine 或是具有 await() 方法的对象。参见 PEP 492。
BDFL
“终身仁慈独裁者”的英文缩写,即 Guido van Rossum,Python 的创造者。
binary file – 二进制文件
file object 能够读写 字节类对象。二进制文件的例子包括以二进制模式(‘rb’, ‘wb’ or ‘rb+’)打开的文件、sys.stdin.buffer、sys.stdout.buffer 以及 io.BytesIO 和 gzip.GzipFile 的实例。另请参见 text file 了解能够读写 str 对象的文件对象。
bytes-like object – 字节类对象
支持 缓冲协议 并且能导出 C-contiguous 缓冲的对象。这包括所有 bytes、bytearray 和 array.array 对象,以及许多普通 memoryview 对象。字节类对象可在多种二进制数据操作中使用;这些操作包括压缩、保存为二进制文件以及通过套接字发送等。某些操作需要可变的二进制数据。这种对象在文档中常被称为“可读写字节类对象”。可变缓冲对象的例子包括 bytearray 以及 bytearray 的 memoryview。其他操作要求二进制数据存放于不可变对象 (“只读字节类对象”);这种对象的例子包括 bytes 以及 bytes 对象的 memoryview。
bytecode – 字节码
Python 源代码会被编译为字节码,即 CPython 解释器中表示 Python 程序的内部代码。字节码还会缓存在 .pyc 文件中,这样第二次执行同一文件时速度更快(可以免去将源码重新编译为字节码)。这种 “中间语言” 运行在根据字节码执行相应机器码的 virtual machine 之上。请注意不同 Python 虚拟机上的字节码不一定通用,也不一定能在不同 Python 版本上兼容。字节码指令列表可以在 dis 模块 的文档中查看。
callback – 回调
一个作为参数被传入以用以在未来的某个时刻被调用的子例程函数。
class – 类
用来创建用户定义对象的模板。类定义通常包含对该类的实例进行操作的方法定义。
class variable – 类变量
在类中定义的变量,并且仅限在类的层级上修改 (而不是在类的实例中修改)。
coercion – 强制类型转换
在包含两个相同类型参数的操作中,一种类型的实例隐式地转换为另一种类型。例如,int(3.15) 是将原浮点数转换为整型数 3,但在 3+4.5 中,参数的类型不一致(一个是 int, 一个是 float),两者必须转换为相同类型才能相加,否则将引发 TypeError。如果没有强制类型转换机制,程序员必须将所有可兼容参数归一化为相同类型,例如要写成 float(3)+4.5 而不是 3+4.5。
complex number – 复数
对普通实数系统的扩展,其中所有数字都被表示为一个实部和一个虚部的和。虚数是虚数单位(-1 的平方根)的实倍数,通常在数学中写为 i,在工程学中写为 j。Python 内置了对复数的支持,采用工程学标记方式;虚部带有一个 j 后缀,例如 3+1j。如果需要 math 模块内对象的对应复数版本,请使用 cmath,复数的使用是一个比较高级的数学特性。如果你感觉没有必要,忽略它们也几乎不会有任何问题。
context manager – 上下文管理器
在 with 语句中使用,通过定义