下面内容主要摘抄自python
官网,https://docs.python.org/3.7/glossary.html#glossary,部份内容有删减。html
一个将 Python
2.x 代码转换为 Python
3.x 代码的工具,可以处理大部分经过解析源码并遍历解析树可检测到的不兼容问题。python
2to3 包含在标准库中,模块名为 lib2to3;并提供一个独立入口点 Tools/scripts/2to3。参见 2to3 - 自动将 Python
2 代码转为 Python
3 代码。程序员
由于官方将在2020年再也不支持 Python
2.x, 在遇到没有Python
2.X 版本 的code 的时候,能够尝试使用这个工具将代码转化成Python 的版本。express
抽象基类简称 ABC,是对 duck-typing 的补充,它提供了一种定义接口的新方式,相比之下其余技巧例如 hasattr() 显得过于笨拙或有微妙错误(例如使用 魔术方法)。ABC 引入了虚拟子类,这种类并不是继承自其余类,但却仍能被 isinstance() 和 issubclass() 所承认;详见 abc 模块文档。Python
自带许多内置的 ABC 用于实现数据结构(在 collections.abc 模块中)、数字(在 numbers 模块中)、流(在 io 模块中)、导入查找器和加载器(在 importlib.abc 模块中)。你可使用 abc 模块来建立本身的 ABC。编程
在调用函数时传给 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。多线程
此种对象经过定义 __aenter__() 和 __aexit__() 方法来对 async with 语句中的环境进行控制。由 PEP 492 引入。
返回值为 asynchronous generator iterator 的函数。它与使用 async def 定义的协程函数很类似,不一样之处在于它包含 yield 表达式以产生一系列可在 async for 循环中使用的值。
此术语一般是指异步生成器函数,但在某些状况下则多是指 异步生成器迭代器。若是须要清楚表达具体含义,请使用全称以免歧义。
一个异步生成器函数可能包含 await 表达式或者 async for 以及 async with 语句。
关联到一个对象的值,可使用点号表达式经过其名称来引用。例如,若是一个对象 o 具备一个属性 a,就能够用 o.a 来引用它。
“终身仁慈独裁者”的英文缩写,即 Guido van Rossum,Python
的创造者。
file object 可以读写 字节类对象。二进制文件的例子包括以二进制模式('rb', 'wb' or 'rb+')打开的文件、sys.stdin.buffer、sys.stdout.buffer 以及 io.BytesIO 和 gzip.GzipFile 的实例。
另请参见 text file 了解可以读写 str 对象的文件对象。
支持 缓冲协议 而且能导出 C-contiguous 缓冲的对象。这包括全部 bytes、bytearray 和 array.array 对象,以及许多普通 memoryview 对象。字节类对象可在多种二进制数据操做中使用;这些操做包括压缩、保存为二进制文件以及经过套接字发送等。
某些操做须要可变的二进制数据。这种对象在文档中常被称为“可读写字节类对象”。可变缓冲对象的例子包括 bytearray 以及 bytearray 的 memoryview。其余操做要求二进制数据存放于不可变对象 ("只读字节类对象");这种对象的例子包括 bytes 以及 bytes 对象的 memoryview。
Python
源代码会被编译为字节码,即 CPython
解释器中表示 Python
程序的内部代码。字节码还会缓存在 .pyc 文件中,这样第二次执行同一文件时速度更快(能够免去将源码从新编译为字节码)。这种 "中间语言" 运行在根据字节码执行相应机器码的 virtual machine 之上。请注意不一样 Python
虚拟机上的字节码不必定通用,也不必定能在不一样 Python
版本上兼容。
用来建立用户定义对象的模板。类定义一般包含对该类的实例进行操做的方法定义。
在类中定义的变量,而且仅限在类的层级上修改 (而不是在类的实例中修改)。
在包含两个相同类型参数的操做中,一种类型的实例隐式地转换为另外一种类型。例如,int(3.15) 是将原浮点数转换为整型数 3,但在 3+4.5 中,参数的类型不一致(一个是 int, 一个是 float),二者必须转换为相同类型才能相加,不然将引起 TypeError。若是没有强制类型转换机制,程序员必须将全部可兼容参数归一化为相同类型,例如要写成 float(3)+4.5 而不是 3+4.5。
coroutine -- 协程
协程是子例程的更通常形式。子例程能够在某一点进入并在另外一点退出。协程则能够在许多不一样的点上进入、退出和恢复。它们可经过 async def 语句来实现。参见 PEP 492。
coroutine function -- 协程函数
返回一个 coroutine 对象的函数。协程函数可经过 async def 语句来定义,并可能包含 await、async for 和 async with 关键字。这些特性是由 PEP 492 引入的。
Python
编程语言的规范实现,在 python
.org 上发布。CPython
一词用于在必要时将此实现与其余实现例如 Jython
或 IronPython
相区别。
返回值为另外一个函数的函数,一般使用 @wrapper 语法形式来进行函数变换。 装饰器的常见例子包括 classmethod() 和 staticmethod()。
装饰器语法只是一种语法糖,如下两个函数定义在语义上彻底等价:
def f(...): ... f = staticmethod(f) @staticmethod def f(...): ...
同的样概念也适用于类,但一般较少这样使用。有关装饰器的详情可参见 函数定义 和 类定义 的文档。
一个关联数组,其中的任意键都映射到相应的值。键能够是任何具备 __hash__() 和 __eq__() 方法的对象。在 Perl 语言中称为 hash。
“求原谅比求许可更容易”的英文缩写。这种 Python
经常使用代码编写风格会假定所需的键或属性存在,并在假定错误时捕获异常。这种简洁快速风格的特色就是大量运用 try 和 except 语句。于其相对的则是所谓 LBYL 风格,常见于 C 等许多其余语言。
能够求出某个值的语法单元。 换句话说,一个表达式就是表达元素例如字面值、名称、属性访问、运算符或函数调用的汇总,它们最终都会返回一个值。 与许多其余语言不一样,并不是全部语言构件都是表达式。 还存在不能被用做表达式的 statement,例如 while。 赋值也是属于语句而非表达式。
extension module -- 扩展模块
以 C 或 C++ 编写的模块,使用 Python
的 C API 来与语言核心以及用户代码进行交互。
对外提供面向文件 API 以使用下层资源的对象(带有 read() 或 write() 这样的方法)。
根据其建立方式的不一样,文件对象能够处理对真实磁盘文件,对其余类型存储,或是对通信设备的访问(例如标准输入/输出、内存缓冲区、套接字、管道等等)。
文件对象也被称为 文件类对象
或 流
。
实际上共有三种类别的文件对象: 原始二进制文件
, 缓冲二进制文件
以及 文本文件
。它们的接口定义均在 io 模块中。
建立文件对象的规范方式是使用 open() 函数。
向下舍入到最接近的整数的数学除法。向下取整除法的运算符是 // 。例如,表达式 11 // 4 的计算结果是 2 ,而与之相反的是浮点数的真正除法返回 2.75 。注意 (-11) // 4 会返回 -3 由于这是 -2.75 向下 舍入获得的结果。见 PEP 238 。
能够向调用者返回某个值的一组语句。还能够向其传入零个或多个 参数 并在函数体执行中被使用。另见 parameter, method 和 函数定义 等节。
一种伪模块,可被程序员用来启用与当前解释器不兼容的新语言特性。
经过导入 future 模块并对其中的变量求值,你能够查看新特性什么时候首次加入语言以及什么时候成为默认:
>>> >>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
释放再也不被使用的内存空间的过程。Python
是经过引用计数和一个可以检测和打破循环引用的循环垃圾回收器来执行垃圾回收的。
可使用 gc 模块来控制垃圾回收器。
CPython
解释器所采用的一种机制,它确保同一时刻只有一个线程在执行 Python
bytecode。此机制经过设置对象模型(包括 dict 等重要内置类型)针对并发访问的隐式安全简化了 CPython
实现。给整个解释器加锁使得解释器多线程运行更方便,其代价则是牺牲了在多处理器上的并行性。
不过,某些标准库或第三方库的扩展模块被设计为在执行计算密集型任务如压缩或哈希时释放 GIL。此外,在执行 I/O 操做时也老是会释放 GIL。
建立一个(以更精细粒度来锁定共享数据的)“自由线程”解释器的努力从未得到成功,由于这会牺牲在普通单处理器状况下的性能。据信克服这种性能问题的措施将致使实现变得更复杂,从而更难以维护。
Python
的 IDE,“集成开发与学习环境”的英文缩写。是 Python
标准发行版附带的基本编程器和解释器环境。
由多个位置(或 路径条目)组成的列表,会被模块的 path based finder 用来查找导入目标。在导入时,此位置列表一般来自 sys.path,但对次级包来讲也可能来自上级包的 path 属性。
可以逐一返回其成员项的对象。可迭代对象的例子包括全部序列类型(例如 list、str 和 tuple)以及某些非序列类型例如 dict、文件对象 以及定义了 __iter__() 方法或是实现了 Sequence 语义的 __getitem__() 方法的任意自定义类对象。
可迭代对象被可用于 for 循环以及许多其余须要一个序列的地方(zip()、map() ...)。当一个可迭代对象做为参数传给内置函数 iter() 时,它会返回该对象的迭代器。这种迭代器适用于对值集合的一次性遍历。在使用可迭代对象时,你一般不须要调用 iter() 或者本身处理迭代器对象。for 语句会为你自动处理那些操做,建立一个临时的未命名变量用来在循环期间保存迭代器。参见 iterator、sequence 以及 generator。
用来表示一连串数据流的对象。重复调用迭代器的 __next__() 方法(或将其传给内置函数 next())将逐个返回流中的项。当没有数据可用时则将引起 StopIteration 异常。到这时迭代器对象中的数据项已耗尽,继续调用其 __next__() 方法只会再次引起 StopIteration 异常。迭代器必须具备 __iter__() 方法用来返回该迭代器对象自身,所以迭代器一定也是可迭代对象,可被用于其余可迭代对象适用的大部分场合。一个显著的例外是那些会屡次重复访问迭代项的代码。容器对象(例如 list)在你每次向其传入 iter() 函数或是在 for 循环中使用它时都会产生一个新的迭代器。若是在此状况下你尝试用迭代器则会返回在以前迭代过程当中被耗尽的同一迭代器对象,使其看起来就像是一个空容器。
由一个单独 expression 构成的匿名内联函数,表达式会在调用时被求值。
建立 lambda 函数的句法为 lambda [parameters]: expression
。
Python
内置的一种 sequence。虽然名为列表,但更相似于其余语言中的数组而非连接列表,由于访问元素的时间复杂度为 O(1)。
一种支持任意键查找并实现了 Mapping 或 MutableMapping 抽象基类 中所规定方法的容器对象。
此类对象的例子包括 dict
, collections.defaultdict
, collections.OrderedDict
以及 collections.Counter
。
一种用于建立类的类。类定义包含类名、类字典和基类列表。元类负责接受上述三个参数并建立相应的类。大部分面向对象的编程语言都会提供一个默认实现。Python
的特别之处在于能够建立自定义元类。大部分用户永远不须要这个工具,但当须要出现时,元类可提供强大而优雅的解决方案。它们已被用于记录属性访问日志、添加线程安全性、跟踪对象建立、实现单例,以及其余许多任务。
在类内部定义的函数。若是做为该类的实例的一个属性来调用,方法将会获取实例对象做为其第一个 argument (一般命名为 self)。参见 function
。
此对象是 Python
代码的一种组织单位。各模块具备独立的命名空间
,可包含任意 Python
对象。模块可经过 importing 操做被加载到 Python
中。
另见 package。
命名空间是存放变量的场所。命名空间有局部、全局和内置的,还有对象中的嵌套命名空间(在方法以内)。
命名空间经过防止命名冲突来支持模块化。例如,函数 builtins.open
与 os.open()
可经过各自的命名空间来区分。命名空间还经过明确哪一个模块实现那个函数来帮助提升可读性和可维护性。
例如,`random.seed() 或
itertools.islice()` 这种写法明确了这些函数是由 random 与 itertools 模块分别实现的。
PEP 420 所引入的一种仅被用做子包的容器的 package,命名空间包能够没有实体表示物,其描述方式与 regular package 不一样,由于它们没有 __init__.py
文件。
另可参见 module。
任何具备状态(属性或值)以及预约义行为(方法)的数据。object 也是任何 new-style class 的最顶层基类名。
一种可包含子模块或递归地包含子包的 Python
module。从技术上说,包是带有 path 属性的 Python
模块。
另参见 regular package 和 namespace package。
function (或方法)定义中的命名实体,它指定函数能够接受的一个 argument (或在某些状况下,多个实参)。有五种形参:
positional-or-keyword:位置或关键字,指定一个能够做为 位置参数 传入也能够做为 关键字参数 传入的实参。
这是默认的形参类型,例以下面的 foo 和 bar:
def func(foo, bar=None): ...
Python
中没有定义仅限位置形参的语法。可是一些内置函数有仅限位置形参(好比 abs()
)。仅限关键字形参可经过在函数定义的形参列表中包含单个可变位置形参或者在多个可变位置形参以前放一个 * 来定义,例以下面的 kw_only1 和 kw_only2:
def func(arg, *, kw_only1, kw_only2): ...
例以下面的 args:
def func(*args, **kwargs): ...
形参能够同时指定可选和必选参数,也能够为某些可选参数指定默认值。
import path 中的一个单独位置,会被 path based finder 用来查找要导入的模块。
“Python
加强提议”的英文缩写。
一个 PEP 就是一份设计文档,用来向 Python
社区提供信息,或描述一个 Python
的新增特性及其进度或环境。PEP 应当提供精确的技术规格和所提议特性的原理说明。
PEP 应被做为提出主要新特性建议、收集社区对特定问题反馈以及为必须加入 Python
的设计决策编写文档的首选机制。PEP 的做者有责任在社区内部创建共识,并应将不一样意见也记入文档。
参见 PEP 1。
一种 iterable,它支持经过 __getitem__() 特殊方法来使用整数索引进行高效的元素访问,并定义了一个返回序列长度的 __len__() 方法。
内置的序列类型有 list、str、tuple 和 bytes。注意虽然 dict 也支持 __getitem__()
和 __len__()
,但它被认为属于映射而非序列,由于它查找时使用任意的 immutable 键而非整数。
collections.abc.Sequence 抽象基类定义了一个更丰富的接口,它超越了 __getitem__()
和 __len__()
,添加了 count()
, index()
, __contains__()
和 __reversed__()
。 可使用 register()
显式注册实现此扩展接口的类型。
一般只包含了特定 sequence 的一部分的对象。
切片是经过使用下标标记来建立的,在 [] 中给出几个以冒号分隔的数字,例如 variable_name[1:3:5]。方括号(下标)标记在内部使用 slice 对象。
语句是程序段(一个代码“块”)的组成单位。
一条语句能够是一个 expression 或某个带有关键字的结构,例如 if、while 或 for。
用于将Unicode字符串编码为字节串的编码器。
类型决定一个 Python
对象属于什么种类;每一个对象都具备一种类型。
要知道对象的类型,能够访问它的 __class__
属性,或是经过 type(obj) 来获取。
type hint -- 类型提示
annotation 为变量、类属性、函数的形参或返回值指定预期的类型。
类型提示属于可选项,Python
不要求提供,但其可对静态类型分析工具起做用,并可协助 IDE 实现代码补全与重构。
全局变量、类属性和函数的类型提示可使用 typing.get_type_hints() 来访问,但局部变量则不能够。
参见 typing 和 PEP 484,其中有对此功能的详细描述。
一种解读文本流的方式,将如下全部符号都识别为行结束标志:Unix 的行结束约定 'n'、Windows 的约定 'rn' 以及旧版 Macintosh 的约定 'r'。
参见 PEP 278 和 PEP 3116 和 bytes.splitlines() 了解更多用法说明。
一台彻底经过软件定义的计算机。Python
虚拟机可执行字节码编译器所生成的 bytecode。
Python
-- Python
之禅列出 Python
设计的原则与哲学,有助于理解与使用这种语言。
定义在PEP 8 中。
每一个版本的具体内容,可能会有差。查看当前版本的具体内容可在交互模式提示符中输入 "import this"。
本文由博客一文多发平台 OpenWrite 发布!