Python术语对照表(一)

>>>
交互式终端中默认的 Python 提示符。往往会显示于能以交互方式在解释器里执行的样例代码之前。


可以是指:

  • 交互式终端中输入特殊代码行时默认的 Python
    提示符,包括:缩进的代码块,成对的分隔符之内(圆括号、方括号、花括号或三重引号),或是指定一个装饰器之后。
  • Ellipsis 内置常量。

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。
(注:arguments表示实参 parameters表示形参)

attribute – 属性
关联到一个对象的值,可以使用点号表达式通过其名称来引用。例如,如果一个对象 o 具有一个属性 a,就可以用 o.a 来引用它。

bytecode – 字节码
Python 源代码会被编译为字节码,即 CPython 解释器中表示 Python 程序的内部代码。字节码还会缓存在 .pyc 文件中,这样第二次执行同一文件时速度更快(可以免去将源码重新编译为字节码)。这种 “中间语言” 运行在根据字节码执行相应机器码的 virtual machine 之上。请注意不同 Python 虚拟机上的字节码不一定通用,也不一定能在不同 Python 版本上兼容。

字节码指令列表可以在 dis 模块 的文档中查看。

class – 类
用来创建用户定义对象的模板。类定义通常包含对该类的实例进行操作的方法定义。

class variable – 类变量
在类中定义的变量,并且仅限在类的层级上修改 (而不是在类的实例中修改)。

coercion – 强制类型转换
在包含两个相同类型参数的操作中,一种类型的实例隐式地转换为另一种类型。例如,int(3.15) 是将原浮点数转换为整型数 3,但在 3+4.5 中,参数的类型不一致(一个是 int, 一个是 float),两者必须转换为相同类型才能相加,否则将引发 TypeError。如果没有强制类型转换机制,程序员必须将所有可兼容参数归一化为相同类型,例如要写成 float(3)+4.5 而不是 3+4.5。

decorator – 装饰器
返回值为另一个函数的函数,通常使用 @wrapper 语法形式来进行函数变换。 装饰器的常见例子包括 classmethod() 和 staticmethod()。

装饰器语法只是一种语法糖,以下两个函数定义在语义上完全等价:

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

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

同的样概念也适用于类,但通常较少这样使用。有关装饰器的详情可参见 函数定义 和 类定义 的文档。

duck-typing – 鸭子类型
指一种编程风格,它并不依靠查找对象类型来确定其是否具有正确的接口,而是直接调用或使用其方法或属性(“看起来像鸭子,叫起来也像鸭子,那么肯定就是鸭子。”)由于强调接口而非特定类型,设计良好的代码可通过允许多态替代来提升灵活性。鸭子类型避免使用 type() 或 isinstance() 检测。(但要注意鸭子类型可以使用 抽象基类 作为补充。) 而往往会采用 hasattr() 检测或是 EAFP 编程。

f-string – f-字符串
带有 ‘f’ 或 ‘F’ 前缀的字符串字面值通常被称为“f-字符串”即 格式化字符串字面值 的简写。参见 PEP 498。

#eg:
name='Heat'
print(f'{name}')  #Heat

floor division – 向下取整除法
向下舍入到最接近的整数的数学除法。向下取整除法的运算符是 // 。例如,表达式 11 // 4 的计算结果是 2 ,而与之相反的是浮点数的真正除法返回 2.75 。注意 (-11) // 4 会返回 -3 因为这是 -2.75 向下 舍入得到的结果。见 PEP 238 。

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

importing – 导入
令一个模块中的 Python 代码能为另一个模块中的 Python 代码所使用的过程。

importer – 导入器
查找并加载模块的对象;此对象既属于 finder 又属于 loader。

interactive – 交互
Python 带有一个交互式解释器,即你可以在解释器提示符后输入语句和表达式,立即执行并查看其结果。只需不带参数地启动 python 命令(也可以在你的计算机开始菜单中选择相应菜单项)。在测试新想法或检验模块和包的时候用这种方式会非常方便(请记得使用 help(x))。

interpreted – 解释型
Python 一是种解释型语言,与之相对的是编译型语言,虽然两者的区别由于字节码编译器的存在而会有所模糊。这意味着源文件可以直接运行而不必显式地创建可执行文件再运行。解释型语言通常具有比编译型语言更短的开发/调试周期,但是其程序往往运行得更慢。参见 interactive。

import path – 导入路径
由多个位置(或 路径条目)组成的列表,会被模块的 path based finder 用来查找导入目标。在导入时,此位置列表通常来自 sys.path,但对次级包来说也可能来自上级包的 __path __ 属性。、

iterable – 可迭代对象
能够逐一返回其成员项的对象。可迭代对象的例子包括所有序列类型(例如 list、str 和 tuple)以及某些非序列类型例如 dict、文件对象 以及定义了 iter() 方法或是实现了 Sequence 语义的 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

list comprehension – 列表推导式
处理一个序列中的所有或部分元素并返回结果列表的一种紧凑写法。result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] 将生成一个 0 到 255 范围内的十六进制偶数对应字符串(0x…)的列表。其中 if 子句是可选的,如果省略则 range(256) 中的所有元素都会被处理。

module – 模块
此对象是 Python 代码的一种组织单位。各模块具有独立的命名空间,可包含任意 Python 对象。模块可通过 importing 操作被加载到 Python 中。
另见 package。

发布了13 篇原创文章 · 获赞 2 · 访问量 231

猜你喜欢

转载自blog.csdn.net/qq_25871537/article/details/104404775