词汇表¶ T0>

>>>
交互式shell的默认Python提示符。 通常可以在解释器中以交互方式执行的代码示例。
...
在为缩进代码块输入代码时,或者在一对匹配的左右分隔符(括号,方括号或花括号)中,交互式shell的默认Python提示符。
2to3

通过处理大部分解析源代码并遍历解析树可以检测到的不兼容性,该工具试图将Python 2.x代码转换为Python 3.x代码。

2to3 is available in the standard library as lib2to3; a standalone entry point is provided as Tools/scripts/2to3. 请参阅2to3 - Automated Python 2 to 3 code translation

abstract base class
Abstract base classes complement duck-typing by providing a way to define interfaces when other techniques like hasattr() would be clumsy or subtly wrong (for example with magic methods). ABCs introduce virtual subclasses, which are classes that don’t inherit from a class but are still recognized by isinstance() and issubclass(); see the abc module documentation. Python comes with many built-in ABCs for data structures (in the collections.abc module), numbers (in the numbers module), streams (in the io module), import finders and loaders (in the importlib.abc module). 您可以使用abc模块创建您自己的ABC。
argument

调用函数时传递给function(或method)的值。 有两种说法:

  • 关键字参数:在函数调用中由一个标识符(例如,name=)作为参数的参数,或者作为以** 例如,35在以下对complex()的调用中都是关键字参数:

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
    
  • 位置参数:不是关键字参数的参数。 位置参数可以出现在参数列表的开始和/或作为以*开头的iterable的元素传递。 例如,35在以下调用中都是位置参数:

    complex(3, 5)
    complex(*(3, 5))
    

参数被分配给函数体中的命名局部变量。 有关管理此分配的规则,请参阅Calls部分。 在语法上,任何表达式都可以用来表示一个参数。评估值被分配给局部变量。

参见parameter词汇表条目,关于the difference between arguments and parameters PEP 362之间差异的常见问题。

asynchronous context manager
An object which controls the environment seen in an async with statement by defining __aenter__() and __aexit__() methods. PEP 492引入。
asynchronous generator

返回asynchronous generator iterator的函数。 它看起来像一个用async def定义的协同函数,除了它包含用于产生一系列值的yield可用于async for循环。

通常是指一个异步生成器函数,但在某些上下文中可能指向一个异步生成器迭代器 在意图不明确的情况下,使用完整的术语避免含糊不清。

An asynchronous generator function may contain await expressions as well as async for, and async with statements.

asynchronous generator iterator

asynchronous generator函数创建的对象。

这是一个asynchronous iterator,当使用__anext__()方法调用时,将返回一个等待对象,该对象将执行异步生成器函数的主体,直到下一个yield表达。

每个yield暂时中止处理,记住位置执行状态(包括局部变量和待处理的try-statements)。 异步生成器迭代器有效地从__anext__()返回的另一个等待继续时,它会在其停止的地方进行拾取。 参见 PEP 492 PEP 525

asynchronous iterable
一个对象,可以在async for语句。 必须从它的__aiter__()方法返回一个asynchronous iterator PEP 492引入。
asynchronous iterator
实现__aiter__()__anext__()方法的对象。 __anext__必须返回awaitable对象。 async for resolves awaitable returned from asynchronous iterator’s __anext__() method until it raises StopAsyncIteration exception. PEP 492引入。
attribute
与使用虚线表达式按名称引用的对象关联的值。 例如,如果一个对象o有一个属性a,它将被引用为o.a
awaitable
可以在await表达式中使用的对象。 可以是一个coroutine或一个带有__await__()方法的对象。 另见 PEP 492
BDFL
仁慈的生命的独裁者,a.k.a. Guido van Rossum, Python’s creator.
binary file

一个file object,能够读写bytes-like objects Examples of binary files are files opened in binary mode ('rb', 'wb' or 'rb+'), sys.stdin.buffer, sys.stdout.buffer, and instances of io.BytesIO and gzip.GzipFile.

也可以看看

一个text file读取和写入str对象。

bytes-like object

支持Buffer Protocol并可以导出C contiguous缓冲区的对象。 这包括所有的bytesbytearrayarray.array对象,以及许多常见的memoryview对象。 类似字节的对象可以用于与二进制数据一起工作的各种操作;这些包括压缩,保存到二进制文件,并通过套接字发送。

一些操作需要二进制数据是可变的。 文档通常将这些文件称为“类似于读写字节的对象”。 Example mutable buffer objects include bytearray and a memoryview of a bytearray. 其他操作要求二进制数据存储在不可变对象(“只读字节对象”)中;这些例子包括bytes对象的bytesmemoryview

bytecode

Python源代码被编译成字节码,这是Python程序在CPython解释器中的内部表示。 字节码也被缓存在.pyc文件中,以便第二次执行相同的文件(可以避免从源代码到字节码的重新编译)。 据说这个“中间语言”运行在执行与每个字节码相对应的机器码的virtual machine上。 请注意,字节码不能在不同的Python虚拟机之间工作,也不能在Python发行版之间保持稳定。

字节码指令列表可以在the dis module的文档中找到。

class
用于创建用户定义的对象的模板。 类定义通常包含对类的实例进行操作的方法定义。
coercion
在涉及两个相同类型参数的操作中,将一个类型的实例隐式转换为另一个类型的实例。 例如,int(3.15)将浮点数转换为整数3,但是在3+4.5中,每个参数都是不同的类型(一个int,一个float),并且在添加之前都必须转换为相同的类型,否则会引发TypeError Without coercion, all arguments of even compatible types would have to be normalized to the same value by the programmer, e.g., float(3)+4.5 rather than just 3+4.5.
complex number
所有数字都被表示为实部和虚部之和的熟悉的实数系统的扩展。 虚数是虚数单位(-1的平方根)的实数倍,通常写在数学中的i或工程中的j Python已经内置了对复数的支持,这些复写是用后面的符号写的;虚数部分被写入后缀j,例如3+1j 要访问math模块的复杂等价物,可以使用cmath 使用复数是一个相当先进的数学特征。 如果你没有意识到他们的需要,几乎可以肯定你可以放心地忽略它们。
context manager
通过定义__enter__()__exit__()方法,通过语句控制在with 参见 PEP 343
contiguous

如果缓冲区是C-contiguousFortran连续,则认为缓冲区是连续的。 零维缓冲区是C和Fortran连续的。 在一维数组中,项目必须按照从零开始的递增索引顺序排列在内存中。 在多维C连续数组中,当按内存地址顺序访问项时,最后一个索引变化最快。 但是,在Fortran连续阵列中,第一个索引变化最快。

coroutine
协程是更常用的子程序形式。 子程序在一个点输入,在另一个点退出。 协程可以在许多不同的地方进入,退出和恢复。 它们可以用async def语句来实现。 另见 PEP 492
coroutine function
返回一个coroutine对象的函数。 协程函数可以用async def语句来定义,并且可以包含awaitasync forasync with 这些是由 PEP 492引入的。
CPython
Python编程语言的规范实现,分布在python.org上。 术语“CPython”在必要时用于区分这种实现与其他实现,如Jython或IronPython。
decorator

返回另一个函数的函数,通常作为函数转换使用@wrapper语法应用。 装饰器的常见示例是classmethod()staticmethod()

装饰器语法仅仅是语法糖,下面两个函数定义在语义上是等价的:

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):
    ...

类存在相同的概念,但在那里不太常用。 有关装饰器的更多信息,请参阅function definitionsclass definitions的文档。

descriptor

任何定义方法__get__()__set__()__delete__()的对象。 当一个类属性是一个描述符时,它的特殊绑定行为在属性查找时触发。 通常,使用ab来获取,设置或删除一个属性,在类字典中为a查找名为b的对象,但是如果 b是一个描述符,相应的描述符方法被调用。 理解描述符是深入理解Python的关键,因为它们是许多功能的基础,包括函数,方法,属性,类方法,静态方法和对超类的引用。

有关描述符方法的更多信息,请参见Implementing Descriptors

dictionary
一个关联数组,其中任意键映射到值。 The keys can be any object with __hash__() and __eq__() methods. 在Perl中称为哈希。
dictionary view
dict.keys()dict.values()dict.items()返回的对象称为字典视图。 它们提供对字典条目的动态视图,这意味着当字典更改时,视图反映了这些更改。 要强制字典视图成为完整列表,请使用list(dictview) 请参阅Dictionary view objects
docstring
作为类,函数或模块中的第一个表达式出现的字符串文字。 当套件被执行时被忽略,它被编译器识别,并被放入封装类,函数或模块的__doc__属性中。 由于它是通过内省来提供的,所以它是对象文档的规范地方。
duck-typing
一种编程风格,它不会查看对象的类型以确定它是否具有正确的接口;相反,方法或属性被简单地调用或使用(“如果它看起来像一只鸭子,像一只鸭子,它肯定是一只鸭子。”)通过强调接口而不是特定类型,精心设计的代码通过允许多态性取代。 鸭式避免使用type()isinstance()进行测试。 (但是请注意,duck-typing可以用abstract base classes来补充)。 Instead, it typically employs hasattr() tests or EAFP programming.
EAFP
比容许更容易要求宽恕。 这种常见的Python编码风格假设存在有效的键或属性,并且如果假设证明是错误的,则捕获异常。 这种干净而快速的风格的特点是存在许多tryexcept语句外。 这种技术与许多其他语言(如C语言)共同使用的LBYL风格相反。
expression
一段语法,可以评估一些价值。 换句话说,表达式是文字,名称,属性访问,运算符或函数调用等表达式元素的累积,它们都返回一个值。 与许多其他语言不同,并不是所有的语言结构都是表达式。 还有statement不能用作表达式,如if 赋值也是语句,而不是表达式。
extension module
用C或C ++编写的模块,使用Python的C API与核心和用户代码进行交互。
f-string
'f''F'为前缀的字符串文字通常被称为“f-字符串”,它是formatted string literals的缩写。 另见 PEP 498
file object

将面向文件的API(如read()write())暴露给基础资源的对象。 根据创建的方式,文件对象可以调解对实际磁盘文件或其他类型存储或通信设备(例如标准输入/输出,内存缓冲区,套接字,管道等)的访问。 。 文件对象也称为类文件对象

实际上有三类文件对象:raw binary files,缓冲binary filestext files 它们的接口在io模块中定义。 创建文件对象的规范方法是使用open()函数。

file-like object
file object的同义词。
finder

试图为要导入的模块找到loader的对象。

Since Python 3.3, there are two types of finder: meta path finders for use with sys.meta_path, and path entry finders for use with sys.path_hooks.

See PEP 302, PEP 420 and PEP 451 for much more detail.

floor division
数舍到最近的整数。 地板划分运算符是// For example, the expression 11 // 4 evaluates to 2 in contrast to the 2.75 returned by float true division. Note that (-11) // 4 is -3 because that is -2.75 rounded downward. 参见 PEP 238
function
一系列向调用者返回一些值的语句。 它也可以传递零个或多个arguments,这些参数可以用于执行主体。 参见parametermethodFunction definitions部分。
function annotation

与函数参数或返回值关联的任意元数据值。 它的语法在Function definitions部分进行了解释。 注解可以通过函数对象的__annotations__特殊属性访问。

Python本身并没有赋予函数注释任何特定的含义。 他们打算由第三方库或工具解释。 参见 PEP 3107,其中描述了它们的一些潜在用途。

__future__

程序员可以使用一个伪模块来启用与当前解释器不兼容的新语言功能。

通过导入__future__模块并评估其变量,您可以看到何时将新功能首次添加到语言中,以及何时变为默认值:

>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
garbage collection
不再使用时释放内存的过程。 Python通过引用计数和循环垃圾收集器来执行垃圾收集,该垃圾收集器能够检测和中断参考周期。
generator

返回generator iterator的函数。 它看起来像一个正常的函数,除了它包含yield表达式来产生一系列可用于for循环的值,或者可以通过next()

通常指的是一个生成器函数,但在某些上下文中可能指的是生成器迭代器 在意图不明确的情况下,使用完整的术语避免含糊不清。

generator iterator

generator函数创建的对象。

每个yield暂时中止处理,记住位置执行状态(包括局部变量和待处理的try-statements)。 生成器迭代器重新开始时,它会在其停止的位置(与每次调用时新开始的函数相反)进行拾取。

generator expression

一个返回一个迭代器的表达式。 它看起来像一个普通表达式,后面跟着for表达式,定义了一个循环变量,范围和一个可选的if表达式。 组合表达式为封闭函数生成值:

>>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
285
generic function

由多个函数组成的函数,对不同类型实现相同的操作。 呼叫期间应该使用哪个实现由调度算法确定。

请参阅single dispatch术语表条目,functools.singledispatch()装饰器和PEP 443

GIL
请参阅global interpreter lock
global interpreter lock

The mechanism used by the CPython interpreter to assure that only one thread executes Python bytecode at a time. 这通过使对象模型(包括诸如dict的重要内置类型)隐式地避免并发访问)简化了CPython实现。 锁定整个解释器使得解释器更易于多线程化,而牺牲了多处理器机器提供的大部分并行性。

但是,某些扩展模块(标准或第三方)的设计是为了在进行诸如压缩或散列等计算密集型任务时释放GIL。 另外,GIL在做I / O时总是被释放。

过去,为了创建一个“自由线程”的解释器(一种锁定共享数据的精度更高的解释器)的努力并不成功,因为在普通的单处理器情况下性能受到了影响。 相信克服这个性能问题会使实现变得更加复杂,因此维护成本更高。

hashable

An object is hashable if it has a hash value which never changes during its lifetime (it needs a __hash__() method), and can be compared to other objects (it needs an __eq__() method). 比较相等的哈希对象必须具有相同的哈希值。

Hashability使对象可用作字典键和集合成员,因为这些数据结构在内部使用散列值。

所有Python的不可变内置对象都是可散列的;可变容器(如列表或字典)不是。 作为用户定义类的实例的对象在默认情况下是可哈希的。 他们都比较不等于(除了自己),他们的哈希值是从他们的id()派生。

IDLE
Python的集成开发环境。 IDLE是一个基本的编辑器和解释器环境,它附带了Python的标准发行版。
immutable
具有固定值的对象。 不可变对象包括数字,字符串和元组。 这样的对象不能改变。 如果必须存储不同的值,则必须创建新的对象。 它们在需要恒定散列值的地方扮演重要角色,例如作为字典中的关键字。
import path
path based finder搜索要导入的模块的位置列表(或path entries)。 在导入期间,这个位置列表通常来自sys.path,但对于子包,它也可能来自父包的__path__属性。
importing
一个模块中的Python代码在另一个模块中可用于Python代码的过程。
importer
一个对象,可以找到并加载一个模块; finderloader对象。
interactive
Python有一个交互式解释器,这意味着你可以在解释器提示符下输入语句和表达式,立即执行它们并查看它们的结果。 只需启动没有参数的python(可能通过从计算机的主菜单中选择)。 这是测试新想法或检查模块和软件包(记住help(x))的一种非常强大的方法。
interpreted
Python是一种解释型语言,与编译型语言相反,但由于字节码编译器的存在,区别可能会变得模糊。 这意味着源文件可以直接运行而不需要显式创建一个可执行文件,然后运行。 解释型语言的开发/调试周期通常比编译后的开发/调试周期短,尽管他们的程序运行速度通常也比较慢。 另请参阅interactive
interpreter shutdown

当被要求关闭时,Python解释器进入一个特殊阶段,逐渐释放所有分配的资源,比如模块和各种关键的内部结构。 它还会对garbage collector进行多次调用。 这可以触发在用户定义的析构函数或weakref回调中执行代码。 在关闭阶段执行的代码可能会遇到各种异常,因为它所依赖的资源可能无法正常工作(常见示例是库模块或警告机器)。

解释器关闭的主要原因是__main__模块或正在运行的脚本已经完成执行。

iterable

一个能够一次返回其成员的对象。 Examples of iterables include all sequence types (such as list, str, and tuple) and some non-sequence types like dict, file objects, and objects of any classes you define with an __iter__() method or with a __getitem__() method that implements Sequence semantics.

Iterables可以在for循环中使用,也可以用在需要序列的很多其他地方(zip()map(),...) 。 When an iterable object is passed as an argument to the built-in function iter(), it returns an iterator for the object. 这个迭代器对于一组值的传递是有好处的。 When using iterables, it is usually not necessary to call iter() or deal with iterator objects yourself. for语句为你自动执行,创建一个临时的未命名变量来保存循环持续时间的迭代器。 另见iteratorsequencegenerator

iterator

表示数据流的对象。 重复调用迭代器的__next__()方法(或将其传递给内置函数next())将返回流中的连续项。 当没有更多的数据可用时,会引发StopIteration异常。 此时,迭代器对象已耗尽,并且再次调用它的__next__()方法只会再次提升StopIteration 迭代器需要有一个__iter__()方法来返回迭代器对象本身,所以每个迭代器也是可迭代的,并且可以在其他迭代器被接受的大多数地方使用。 一个值得注意的例外是尝试多次迭代的代码。 一个容器对象(如list)每次将它传递给iter()函数或在for 用迭代器试图这样做会返回与前一次迭代中使用的相同的迭代器对象,使其看起来像一个空的容器。

更多的信息可以在Iterator Types中找到。

key function

关键函数或整理函数是一个可调用函数,它返回用于排序或排序的值。 For example, locale.strxfrm() is used to produce a sort key that is aware of locale specific sort conventions.

Python中的一些工具接受关键函数来控制元素的排序或分组方式。 They include min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest(), and itertools.groupby().

有几种方法来创建一个关键功能。 例如。 str.lower()方法可以作为不区分大小写排序的关键函数。 或者,可以从lambda表达式(例如, 拉姆达 R: (R [0], [R [2]). 另外,operator模块提供了三个关键的函数构造函数:attrgetter()itemgetter()methodcaller() 有关如何创建和使用按键功能的示例,请参阅Sorting HOW TO

keyword argument
参见argument
lambda
一个匿名的内联函数,由一个expression组成,这个函数被调用时被评估。 创建lambda函数的语法是 拉姆达 [参数]: 表达
LBYL

三思而后行。 这种编码风格在进行调用或查找之前明确地测试前提条件。 This style contrasts with the EAFP approach and is characterized by the presence of many if statements.

在多线程环境下,LBYL方法可能会在“看”与“跳跃”之间引入竞争条件。 例如,代码, 如果 制图: 返回 映射[键] 如果另一个线程在测试之后但在查找之前从映射中移除,则可能会失败。 这个问题可以通过锁定或使用EAFP方法来解决。

list
一个内置的Python sequence 尽管它的名字更接近于其他语言的数组,而不是链接列表,因为访问元素是O(1)。
list comprehension
处理序列中全部或部分元素的紧凑方法,并返回列表和结果。 result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] generates a list of strings containing even hex numbers (0x..) in the range from 0 to 255. The if clause is optional. 如果省略,则处理range(256)中的所有元素。
loader
加载模块的对象。 它必须定义一个名为load_module()的方法。 加载程序通常由finder返回。 有关详细信息,请参阅 PEP 302abstract base classimportlib.abc.Loader
mapping
一个支持任意键查找并实现MappingMutableMapping abstract base classes中指定的方法的容器对象。 例子包括dictcollections.defaultdictcollections.OrderedDictcollections.Counter
meta path finder

通过搜索sys.meta_path返回一个finder 元路径查找程序与path entry finders有关,但不同。

请参阅importlib.abc.MetaPathFinder了解元路径查找器实现的方法。

metaclass

班级。 类定义创建一个类名,一个类字典和一个基类列表。 元类负责接受这三个参数并创建类。 大多数面向对象的编程语言提供了默认的实现 Python的特殊之处在于可以创建自定义的元类。 大多数用户从不需要这个工具,但是当需要出现时,元类可以提供强大而优雅的解决方案。 它们被用于记录属性访问,添加线程安全性,跟踪对象创建,实现单例等许多任务。

More information can be found in Metaclasses.

method
一个在类体内定义的函数。 如果作为该类实例的属性被调用,该方法将获得实例对象作为其第一个argument(通常称为self)。 请参阅functionnested scope
method resolution order
方法解析顺序是在查找期间基本类搜索成员的顺序。 有关Python解释器自2.3版本以来使用的算法的详细信息,请参阅Python 2.3方法解析顺序
module

作为Python代码的组织单位的对象。 模块有一个包含任意Python对象的命名空间。 模块通过importing的过程加载到Python中。

另见package

module spec
包含用于加载模块的导入相关信息的命名空间。 importlib.machinery.ModuleSpec的一个实例。
MRO
请参阅method resolution order
mutable
可变对象可以改变它们的值,但是保持它们的id() 另见immutable
named tuple

可索引元素也可以使用命名属性(例如,time.localtime())访问的任何元组类都可以返回一个元组对象,其中诸如t[0]或具有像t.tm_year这样的命名属性的索引)。

一个命名的元组可以是一个内置的类型,比如time.struct_time,也可以使用常规的类定义创建。 一个全功能的命名元组也可以用工厂函数collections.namedtuple()创建。 后一种方法自动提供额外的功能,例如像Employee(name ='jones', title ='程序员')

namespace
存储变量的地方。 名字空间被实现为字典。 本地,全局和内置的命名空间以及对象中的嵌套命名空间(在方法中)。 命名空间通过防止命名冲突来支持模块化。 例如,函数builtins.openos.open()通过名称空间进行区分。 命名空间通过明确哪个模块实现一个功能来帮助可读性和可维护性。 例如,写random.seed()itertools.islice()清楚表明这些函数是由randomitertools模块。
namespace package

A PEP 420 package which serves only as a container for subpackages. 命名空间包可能没有物理表示,特别是不像regular package,因为它们没有__init__.py文件。

另见module

nested scope
在封闭定义中引用变量的能力。 例如,在另一个函数中定义的函数可以引用外部函数中的变量。 请注意,默认情况下,嵌套的作用域仅用于引用而不用于赋值。 局部变量都在最内层的范围内读写。 同样,全局变量读写全局名称空间。 nonlocal允许写入外部作用域。
new-style class
旧名称现在用于所有类对象的类的味道。 In earlier Python versions, only new-style classes could use Python’s newer, versatile features like __slots__, descriptors, properties, __getattribute__(), class methods, and static methods.
object
任何具有状态(属性或值)和定义的行为(方法)的数据。 也是任何new-style class
package

一个Python module,可以包含子模块或递归子包。 从技术上讲,包是一个Python模块,具有__path__属性。

另见regular packagenamespace package

parameter

function(或方法)定义中的一个命名实体,用于指定函数可以接受的argument(或在某些情况下,参数)。 有五种参数:

  • 位置或关键字:指定一个可以在positionallykeyword argument传递的参数。 这是默认的参数类型,例如foobar,如下所示:

    def func(foo, bar=None): ...
    
  • 仅限位置:指定只能由位置提供的参数。 Python没有定义位置参数的语法。 但是,某些内置函数只有位置参数(例如abs())。
  • 仅限关键字:指定只能由关键字提供的参数。 关键字参数可以通过在它们之前的函数定义的参数列表中包含单个变量位置参数或裸*来定义,例如kw_only1kw_only2如下:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • var-positional: specifies that an arbitrary sequence of positional arguments can be provided (in addition to any positional arguments already accepted by other parameters). 这样的参数可以通过在参数名称前加上*来定义,例如args,如下所示:

    def func(*args, **kwargs): ...
    
  • var-keyword: specifies that arbitrarily many keyword arguments can be provided (in addition to any keyword arguments already accepted by other parameters). 这样的参数可以通过在参数名前加上**来定义,例如上面例子中的kwargs

参数可以指定可选参数和必需参数,以及某些可选参数的默认值。

参见argument词汇表条目,the difference between arguments and parameters之间的差异,inspect.Parameter类,Function definitions部分和 PEP 362

path entry
基于path based finderimport path中的单个位置查找要导入的模块。
path entry finder

A finder returned by a callable on sys.path_hooks (i.e. a path entry hook) which knows how to locate modules given a path entry.

请参阅importlib.abc.PathEntryFinder了解路径条目查找器实现的方法。

path entry hook
sys.path_hook列表上可调用,如果它知道如何在特定的path entry上查找模块,则返回path entry finder
path based finder
其中一个为模块搜索import path的默认meta path finders
path-like object
表示文件系统路径的对象。 类路径对象是表示路径的strbytes对象,或实现os.PathLike协议的对象。 An object that supports the os.PathLike protocol can be converted to a str or bytes file system path by calling the os.fspath() function; os.fsdecode() and os.fsencode() can be used to guarantee a str or bytes result instead, respectively. PEP 519引入。
portion
PEP 420中定义的一组文件放在单个目录(可能存储在一个zip文件中)中。
positional argument
参见argument
provisional API

临时API是故意排除在标准库的后向兼容性保证之外的。 尽管不希望对这些接口进行重大更改,只要它们被标记为临时的,如果核心开发人员认为有必要,可能会发生向后不兼容的更改(直至并包括接口的删除)。 这样的改变不会无偿地发生 - 只有在包含API之前漏掉了严重的基本漏洞,才会发生这种改变。

即使对于临时API,向后兼容的变化也被视为“最后的解决方案” - 每一次尝试仍然会找到一个向下兼容的解决方案来解决任何已知的问题。

此过程允许标准库随着时间的推移而不断发展,而不会在长时间内锁定有问题的设计错误。 请参阅 PEP 411了解更多详情。

provisional package
请参阅provisional API
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)
qualified name

显示从模块全局范围到模块中定义的类,函数或方法的“路径”的点名,如 PEP 3155中所定义。 对于顶级函数和类,限定名称与对象名称相同:

>>> class C:
...     class D:
...         def meth(self):
...             pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> C.D.meth.__qualname__
'C.D.meth'

当用于引用模块时,全限定名表示模块的整个虚线路径,包括任何父包, email.mime.text

>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
reference count
对象的引用数量。 当一个对象的引用计数降到零时,它将被解除分配。 引用计数通常对Python代码不可见,但它是CPython实现的关键元素。 sys模块定义了一个getrefcount()函数,程序员可以调用它来返回特定对象的引用计数。
regular package

传统的package,例如包含__init__.py文件的目录。

另见namespace package

__slots__
类中的声明,通过预先声明实例属性的空间并消除实例字典来节省内存。 虽然流行,但技术有点棘手得到正确的,最好保留在关键内存应用程序中有大量实例的罕见情况。
sequence

An iterable which supports efficient element access using integer indices via the __getitem__() special method and defines a __len__() method that returns the length of the sequence. 一些内置的序列类型是liststrtuplebytes Note that dict also supports __getitem__() and __len__(), but is considered a mapping rather than a sequence because the lookups use arbitrary immutable keys rather than integers.

collections.abc.Sequence抽象基类定义了一个超越__getitem__()__len__()的更丰富的接口,添加了count()index()__contains__()__reversed__() 实现这个扩展接口的类型可以使用register()显式注册。

single dispatch
一种generic function调度的形式,其中根据单个参数的类型选择实现。
slice
通常包含sequence的一部分的对象。 当给出几个数字时,如variable_name[1:3:5],使用下标符号[]来创建切片。 括号(下标)符号在内部使用slice对象。
special method
一种由Python隐式调用的方法,用于对类型执行某种操作,例如添加。 这些方法的名称以双下划线开头和结尾。 特殊方法记录在Special method names中。
statement
声明是套件的一部分(代码块)。 一个语句可以是expression,也可以是几个带关键字的结构之一,如ifwhilefor
struct sequence
具有命名元素的元组。 结构序列公开了一个类似于named tuple的接口,因为元素既可以通过索引也可以通过属性访问。 但是,它们没有像_make()_asdict()这样的任何指定的元组方法。 结构序列的例子包括sys.float_infoos.stat()的返回值。
text encoding
将Unicode字符串编码为字节的编解码器。
text file

一个能够读写str对象的file object 通常,文本文件实际上访问一个面向字节的数据流,并自动处理text encoding 文本文件的示例是以文本模式('r''w'),sys.stdinsys.stdoutio.StringIO的实例。

也可以看看

一个binary file读取和写入bytes对象。

triple-quoted string
由引号(“)或撇号(')的三个实例绑定的字符串。 虽然他们没有提供单引号字符串不具备的任何功能,但由于多种原因,这些功能是有用的。 它们允许您在字符串中包含未转义的单引号和双引号,并且可以在不使用连续字符的情况下跨越多行,使得它们在编写文档字符串时特别有用。
type
Python对象的类型决定了它是什么类型的对象;每个对象都有一个类型。 一个对象的类型可以作为它的__class__属性访问,或者可以通过type(obj)检索。
universal newlines
一种解释文本流的方式,其中以下所有内容都被认为是以行结束:Unix行尾约定'\n',Windows惯例'\r\n'和旧的Macintosh约定'\r' See PEP 278 and PEP 3116, as well as bytes.splitlines() for an additional use.
variable annotation

与模块全局变量或类属性关联的类型元数据值。 它的语法在Annotated assignment statements一节中解释。 注释存储在类或模块对象的__annotations__特殊属性中,可以使用typing.get_type_hints()来访问。

Python本身并没有赋予变量注释任何特定的含义。 它们旨在被第三方库或类型检查工具解释。 See PEP 526, PEP 484 which describe some of their potential uses.

virtual environment

协作隔离的运行环境,允许Python用户和应用程序安装和升级Python分发包,而不会干扰在同一系统上运行的其他Python应用程序的行为。

另见venv

virtual machine
一台完全用软件定义的计算机。 Python的虚拟机执行字节码编译器发出的bytecode
Zen of Python
列出有助于理解和使用该语言的Python设计原则和哲学。 列表可以通过在交互式提示符处输入“import this”找到。