编程技术分享平台

网站首页 > 技术教程 正文

Python术语对照表(上)(python 术语)

xnh888 2024-11-13 13:31:27 技术教程 37 ℃ 0 评论
  • 交互式终端中默认的 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 484PEP 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 492PEP 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.BytesIOgzip.GzipFile 的实例。另请参见 text file 了解能够读写 str 对象的文件对象。
  • bytes-like object -- 字节类对象支持 缓冲协议 并且能导出 C-contiguous 缓冲的对象。这包括所有 bytesbytearrayarray.array 对象,以及许多普通 memoryview 对象。字节类对象可在多种二进制数据操作中使用;这些操作包括压缩、保存为二进制文件以及通过套接字发送等。某些操作需要可变的二进制数据。这种对象在文档中常被称为“可读写字节类对象”。可变缓冲对象的例子包括 bytearray 以及 bytearraymemoryview。其他操作要求二进制数据存放于不可变对象 ("只读字节类对象");这种对象的例子包括 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 语句中使用,通过定义 __enter__()__exit__() 方法来控制环境状态的对象。参见 PEP 343
  • context variable -- 上下文变量一种根据其所属的上下文可以具有不同的值的变量。 这类似于在线程局部存储中每个执行线程可以具有不同的变量值。 不过,对于上下文变量来说,一个执行线程中可能会有多个上下文,而上下文变量的主要用途是对并发异步任务中变量进行追踪。 参见 contextvars
  • contiguous -- 连续一个缓冲如果是 C 连续Fortran 连续 就会被认为是连续的。零维缓冲是 C 和 Fortran 连续的。在一维数组中,所有条目必须在内存中彼此相邻地排列,采用从零开始的递增索引顺序。在多维 C-连续数组中,当按内存地址排列时用最后一个索引访问条目时速度最快。但是在 Fortran 连续数组中则是用第一个索引最快。
  • coroutine -- 协程协程是子例程的更一般形式。 子例程可以在某一点进入并在另一点退出。 协程则可以在许多不同的点上进入、退出和恢复。 它们可通过 async def 语句来实现。 参见 PEP 492
  • coroutine function -- 协程函数返回一个 coroutine 对象的函数。协程函数可通过 async def 语句来定义,并可能包含 awaitasync forasync with 关键字。这些特性是由 PEP 492 引入的。
  • CPythonPython 编程语言的规范实现,在 python.org 上发布。"CPython" 一词用于在必要时将此实现与其他实现例如 Jython 或 IronPython 相区别。
  • decorator -- 装饰器返回值为另一个函数的函数,通常使用 @wrapper 语法形式来进行函数变换。 装饰器的常见例子包括 classmethod()staticmethod()。装饰器语法只是一种语法糖,以下两个函数定义在语义上完全等价:def f(...): ... f = staticmethod(f) @staticmethod def f(...): ...同的样概念也适用于类,但通常较少这样使用。有关装饰器的详情可参见 函数定义 和 类定义 的文档。
  • descriptor -- 描述器任何定义了 __get__(), __set__()__delete__() 方法的对象。当一个类属性为描述器时,它的特殊绑定行为就会在属性查找时被触发。通常情况下,使用 a.b 来获取、设置或删除一个属性时会在 a 的类字典中查找名称为 b 的对象,但如果 b 是一个描述器,则会调用对应的描述器方法。理解描述器的概念是更深层次理解 Python 的关键,因为这是许多重要特性的基础,包括函数、方法、属性、类方法、静态方法以及对超类的引用等等。有关描述符的方法的详情可参看 实现描述器。
  • dictionary -- 字典一个关联数组,其中的任意键都映射到相应的值。键可以是任何具有 __hash__()__eq__() 方法的对象。在 Perl 语言中称为 hash。
  • dictionary comprehension -- 字典推导式处理一个可迭代对象中的所有或部分元素并返回结果字典的一种紧凑写法。 results = {n: n ** 2 for n in range(10)} 将生成一个由键 n 到值 n ** 2 的映射构成的字典。 参见 列表、集合与字典的显示。
  • dictionary view -- 字典视图从 dict.keys(), dict.values()dict.items() 返回的对象被称为字典视图。它们提供了字典条目的一个动态视图,这意味着当字典改变时,视图也会相应改变。要将字典视图强制转换为真正的列表,可使用 list(dictview)。参见 字典视图对象。
  • docstring -- 文档字符串作为类、函数或模块之内的第一个表达式出现的字符串字面值。它在代码执行时会被忽略,但会被解释器识别并放入所在类、函数或模块的 __doc__ 属性中。由于它可用于代码内省,因此是对象存放文档的规范位置。
  • duck-typing -- 鸭子类型指一种编程风格,它并不依靠查找对象类型来确定其是否具有正确的接口,而是直接调用或使用其方法或属性(“看起来像鸭子,叫起来也像鸭子,那么肯定就是鸭子。”)由于强调接口而非特定类型,设计良好的代码可通过允许多态替代来提升灵活性。鸭子类型避免使用 type()isinstance() 检测。(但要注意鸭子类型可以使用 抽象基类 作为补充。) 而往往会采用 hasattr() 检测或是 EAFP 编程。
  • EAFP“求原谅比求许可更容易”的英文缩写。这种 Python 常用代码编写风格会假定所需的键或属性存在,并在假定错误时捕获异常。这种简洁快速风格的特点就是大量运用 tryexcept 语句。于其相对的则是所谓 LBYL 风格,常见于 C 等许多其他语言。
  • expression -- 表达式可以求出某个值的语法单元。 换句话说,一个表达式就是表达元素例如字面值、名称、属性访问、运算符或函数调用的汇总,它们最终都会返回一个值。 与许多其他语言不同,并非所有语言构件都是表达式。 还存在不能被用作表达式的 statement,例如 while。 赋值也是属于语句而非表达式。
  • extension module -- 扩展模块 C 或 C++ 编写的模块,使用 Python 的 C API 来与语言核心以及用户代码进行交互。
  • f-string -- f-字符串带有 'f' 或 'F' 前缀的字符串字面值通常被称为“f-字符串”即 格式化字符串字面值 的简写。参见 PEP 498
  • file object -- 文件对象对外提供面向文件 API 以使用下层资源的对象(带有 read() 或 write() 这样的方法)。根据其创建方式的不同,文件对象可以处理对真实磁盘文件,对其他类型存储,或是对通讯设备的访问(例如标准输入/输出、内存缓冲区、套接字、管道等等)。文件对象也被称为 文件类对象。实际上共有三种类别的文件对象: 原始 二进制文件, 缓冲 二进制文件 以及 文本文件。它们的接口定义均在 io 模块中。创建文件对象的规范方式是使用 open() 函数。
  • file-like object -- 文件类对象file object 的同义词。
  • finder -- 查找器一种会尝试查找被导入模块的 loader 的对象。从 Python 3.3 起存在两种类型的查找器: 元路径查找器 配合 sys.meta_path 使用,以及 path entry finders 配合 sys.path_hooks 使用。更多详情可参见 PEP 302, PEP 420PEP 451
  • floor division -- 向下取整除法向下舍入到最接近的整数的数学除法。向下取整除法的运算符是 // 。例如,表达式 11 // 4 的计算结果是 2 ,而与之相反的是浮点数的真正除法返回 2.75 。注意 (-11) // 4 会返回 -3 因为这是 -2.75 向下 舍入得到的结果。见 PEP 238
  • function -- 函数可以向调用者返回某个值的一组语句。还可以向其传入零个或多个 参数 并在函数体执行中被使用。另见 parameter, method 和 函数定义 等节。
  • function annotation -- 函数标注即针对函数形参或返回值的 annotation 。函数标注通常用于 类型提示:例如以下函数预期接受两个 int 参数并预期返回一个 int 值:def sum_two_numbers(a: int, b: int) -> int: return a + b函数标注语法的详解见 函数定义 一节。请参看 variable annotation 和 PEP 484 对此功能的描述。
  • future一种伪模块,可被程序员用来启用与当前解释器不兼容的新语言特性。通过导入 __future__ 模块并对其中的变量求值,你可以查看新特性何时首次加入语言以及何时成为默认:>>>>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
  • garbage collection -- 垃圾回收释放不再被使用的内存空间的过程。Python 是通过引用计数和一个能够检测和打破循环引用的循环垃圾回收器来执行垃圾回收的。可以使用 gc 模块来控制垃圾回收器。
  • generator -- 生成器返回一个 generator iterator 的函数。它看起来很像普通函数,不同点在于其包含 yield 表达式以便产生一系列值供给 for-循环使用或是通过 next() 函数逐一获取。通常是指生成器函数,但在某些情况下也可能是指 生成器迭代器。如果需要清楚表达具体含义,请使用全称以避免歧义。
  • generator iterator -- 生成器迭代器generator 函数所创建的对象。每个 yield 会临时暂停处理,记住当前位置执行状态(包括局部变量和挂起的 try 语句)。当该 生成器迭代器 恢复时,它会从离开位置继续执行(这与每次调用都从新开始的普通函数差别很大)。
  • 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 -- 全局解释器锁CPython 解释器所采用的一种机制,它确保同一时刻只有一个线程在执行 Python bytecode。此机制通过设置对象模型(包括 dict等重要内置类型)针对并发访问的隐式安全简化了 CPython 实现。给整个解释器加锁使得解释器多线程运行更方便,其代价则是牺牲了在多处理器上的并行性。不过,某些标准库或第三方库的扩展模块被设计为在执行计算密集型任务如压缩或哈希时释放 GIL。此外,在执行 I/O 操作时也总是会释放 GIL。创建一个(以更精细粒度来锁定共享数据的)“自由线程”解释器的努力从未获得成功,因为这会牺牲在普通单处理器情况下的性能。据信克服这种性能问题的措施将导致实现变得更复杂,从而更难以维护。
  • hash-based pyc -- 基于哈希的 pyc使用对应源文件的哈希值而非最后修改时间来确定其有效性的字节码缓存文件。 参见 已缓存字节码的失效。
  • hashable -- 可哈希一个对象的哈希值如果在其生命周期内绝不改变,就被称为 可哈希 (它需要具有 __hash__() 方法),并可以同其他对象进行比较(它需要具有 __eq__() 方法)。可哈希对象必须具有相同的哈希值比较结果才会相同。可哈希性使得对象能够作为字典键或集合成员使用,因为这些数据结构要在内部使用哈希值。大多数 Python 中的不可变内置对象都是可哈希的;可变容器(例如列表或字典)都不可哈希;不可变容器(例如元组和 frozenset)仅当它们的元素均为可哈希时才是可哈希的。 用户定义类的实例对象默认是可哈希的。 它们在比较时一定不相同(除非是与自己比较),它们的哈希值的生成是基于它们的 id()
  • IDLEPython 的 IDE,“集成开发与学习环境”的英文缩写。是 Python 标准发行版附带的基本编辑器和解释器环境。
  • immutable -- 不可变具有固定值的对象。不可变对象包括数字、字符串和元组。这样的对象不能被改变。如果必须存储一个不同的值,则必须创建新的对象。它们在需要常量哈希值的地方起着重要作用,例如作为字典中的键。
  • import path -- 导入路径由多个位置(或 路径条目)组成的列表,会被模块的 path based finder 用来查找导入目标。在导入时,此位置列表通常来自 sys.path,但对次级包来说也可能来自上级包的 __path__ 属性。
  • importing -- 导入一个模块中的 Python 代码能为另一个模块中的 Python 代码所使用的过程。
  • importer -- 导入器查找并加载模块的对象;此对象既属于 finder 又属于 loader。
  • interactive -- 交互Python 带有一个交互式解释器,即你可以在解释器提示符后输入语句和表达式,立即执行并查看其结果。只需不带参数地启动 python 命令(也可以在你的计算机开始菜单中选择相应菜单项)。在测试新想法或检验模块和包的时候用这种方式会非常方便(请记得使用 help(x))。
  • interpreted -- 解释型Python 一是种解释型语言,与之相对的是编译型语言,虽然两者的区别由于字节码编译器的存在而会有所模糊。这意味着源文件可以直接运行而不必显式地创建可执行文件再运行。解释型语言通常具有比编译型语言更短的开发/调试周期,但是其程序往往运行得更慢。参见 interactive。
  • interpreter shutdown -- 解释器关闭当被要求关闭时,Python 解释器将进入一个特殊运行阶段并逐步释放所有已分配资源,例如模块和各种关键内部结构等。它还会多次调用 垃圾回收器。这会触发用户定义析构器或弱引用回调中的代码执行。在关闭阶段执行的代码可能会遇到各种异常,因为其所依赖的资源已不再有效(常见的例子有库模块或警告机制等)。解释器需要关闭的主要原因有 __main__ 模块或所运行的脚本已完成执行。
  • iterable -- 可迭代对象能够逐一返回其成员项的对象。 可迭代对象的例子包括所有序列类型 (例如 list, strtuple) 以及某些非序列类型例如 dict, 文件对象 以及定义了 __iter__() 方法或是实现了 序列 语义的 __getitem__() 方法的任意自定义类对象。可迭代对象被可用于 for 循环以及许多其他需要一个序列的地方(zip()map() ...)。当一个可迭代对象作为参数传给内置函数 iter()时,它会返回该对象的迭代器。这种迭代器适用于对值集合的一次性遍历。在使用可迭代对象时,你通常不需要调用 iter() 或者自己处理迭代器对象。for 语句会为你自动处理那些操作,创建一个临时的未命名变量用来在循环期间保存迭代器。参见 iterator、sequence 以及 generator。
  • iterator -- 迭代器用来表示一连串数据流的对象。重复调用迭代器的 __next__() 方法(或将其传给内置函数 next())将逐个返回流中的项。当没有数据可用时则将引发 StopIteration 异常。到这时迭代器对象中的数据项已耗尽,继续调用其 __next__() 方法只会再次引发 StopIteration 异常。迭代器必须具有 __iter__() 方法用来返回该迭代器对象自身,因此迭代器必定也是可迭代对象,可被用于其他可迭代对象适用的大部分场合。一个显著的例外是那些会多次重复访问迭代项的代码。容器对象(例如 list)在你每次向其传入 iter() 函数或是在 for 循环中使用它时都会产生一个新的迭代器。如果在此情况下你尝试用迭代器则会返回在之前迭代过程中被耗尽的同一迭代器对象,使其看起来就像是一个空容器。更多信息可查看 迭代器类型。
  • key function -- 键函数键函数或称整理函数,是能够返回用于排序或排位的值的可调用对象。例如,locale.strxfrm() 可用于生成一个符合特定区域排序约定的排序键。Python 中有许多工具都允许用键函数来控制元素的排位或分组方式。其中包括 min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest() 以及 itertools.groupby()。要创建一个键函数有多种方式。例如,str.lower() 方法可以用作忽略大小写排序的键函数。另外,键函数也可通过 lambda 表达式来创建,例如 lambda r: (r[0], r[2])。还有 operator 模块提供了三个键函数构造器:attrgetter()itemgetter()methodcaller()。请查看 如何排序 一节以获取创建和使用键函数的示例。
  • keyword argument -- 关键字参数参见 argument。
  • lambda由一个单独 expression 构成的匿名内联函数,表达式会在调用时被求值。创建 lambda 函数的句法为 lambda [parameters]: expression
  • LBYL“先查看后跳跃”的英文缩写。这种代码编写风格会在进行调用或查找之前显式地检查前提条件。此风格与 EAFP 方式恰成对比,其特点是大量使用 if 语句。在多线程环境中,LBYL 方式会导致“查看”和“跳跃”之间发生条件竞争风险。例如,以下代码 if key in mapping: return mapping[key] 可能由于在检查操作之后其他线程从 mapping 中移除了 key 而出错。这种问题可通过加锁或使用 EAFP 方式来解决。
  • list -- 列表Python 内置的一种 sequence。虽然名为列表,但更类似于其他语言中的数组而非链接列表,因为访问元素的时间复杂度为 O(1)。
  • list comprehension -- 列表推导式处理一个序列中的所有或部分元素并返回结果列表的一种紧凑写法。result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] 将生成一个 0 到 255 范围内的十六进制偶数对应字符串(0x..)的列表。其中 if 子句是可选的,如果省略则 range(256) 中的所有元素都会被处理。

最后,小编想说:我是一名python开发工程师,

整理了一套最新的python系统学习教程,

想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助.

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表