当前位置: 首页 > 后端技术 > Python

Python-基础-常用术语对照表

时间:2023-03-26 13:32:18 Python

以下内容主要摘自python官网https://docs.python.org/3.7/glossary.html#glossary,部分内容已删除。2to3是一种将Python2.x代码转换为Python3.x代码的工具,能够处理通过解析源代码和遍历解析树可检测到的大多数不兼容性。2to3作为名为lib2to3的模块包含在标准库中;并提供了一个单独的入口点Tools/scripts/2to3。请参阅2to3-自动将Python2代码转换为Python3代码。因为2020年官方将不再支持Python2.x,当遇到没有Python2.X版本的代码时,可以尝试使用这个工具将代码转换成Python版本。abstractbaseclass--abstractbaseclass抽象基类简称ABC,是对duck-typing的补充,它提供了一种新的接口定义方式,与其他技术如hasattr()相比过于笨拙或存在细微错误(例如使用魔术方法)。ABC引入了虚子类,即不继承自其他类,但仍被isinstance()和issubclass()识别的类;有关详细信息,请参阅abc模块文档。Python带有许多内置的ABC,用于实现数据结构(在collections.abc模块中)、数字(在numbers模块中)、流(在io模块中)、导入查找器和加载器(在importlib.abc模块中)))。您可以使用abc模块来创建自己的ABC。argument–调用函数时传递给函数(或方法)的参数值。参数有两种类型:关键字参数:要么在函数调用中以标识符开头(例如name=),要么作为包含在字典中的值以**开头。例如,3和5是以下对complex()的调用中的关键字参数:complex(real=3,imag=5)complex(**{'real':3,'imag':5})位置参数:Arguments那不是关键字参数。位置参数可以出现在参数列表的开头和/或作为前面带有*的iterable的元素传入。例如,3和5在以下调用中是位置参数:complex(3,5)complex(*(3,5))参数将被分配给函数体中相应的局部变量。有关分配规则,请参阅呼叫部分。根据语法,任何表达式都可以用来表示一个参数;结果值将分配给相应的局部变量。另请参阅参数词汇表条目、FAQ中的参数与形式参数之间的区别以及PEP362。异步上下文管理器——一个异步上下文管理器对象,它通过定义__aenter__()和__aexit__()方法在asyncwith语句中控制环境.由PEP492引入。异步生成器——异步生成器返回一个函数,其值是一个异步生成器迭代器。它类似于用asyncdef定义的协程函数,不同之处在于它包含yield表达式以生成可在异步for循环中使用的值序列。该术语通常指代异步生成器函数,但在某些情况下它可能指代异步生成器迭代器。如需明确表达具体含义,请使用全名,以免产生歧义。异步生成器函数可能包含await表达式或asyncfor和asyncwith语句。attribute–属性与对象的值相关联,可以使用点表示法通过其名称进行引用。例如,如果一个对象o有一个属性a,它可以被引用为o.a。BDFL是“BenevolentDictatorforLife”的首字母缩写,即Python的创造者GuidovanRossum。二进制文件——二进制文件对象可以读取和写入类似字节的对象。二进制文件的示例包括以二进制模式(“rb”、“wb”或“rb+”)打开的文件、sys.stdin.buffer、sys.stdout.buffer以及io.BytesIO和gzip.GzipFile的实例。另请参阅文本文件,了解能够读取和写入str对象的文件对象。bytes-likeobject--bytes-likeobjects支持缓冲协议并且可以导出C-contiguous缓冲对象。这包括所有bytes、bytearray和array.array对象,以及许多普通的memoryview对象。类字节对象可用于各种二进制数据操作;这些包括压缩、保存到二进制文件、通过套接字发送等等。某些操作需要可变的二进制数据。此类对象在文档中通常称为“可读和可写的类字节对象”。可变缓冲区对象的示例包括bytearray和bytearray的memoryview。其他操作需要将二进制数据存储在不可变对象(“只读类字节对象”)中;此类对象的示例包括字节对象和字节对象的内存视图。字节码--字节码Python源代码被编译为字节码,即CPython解释器中表示Python程序的内部代码。字节码也缓存在.pyc文件中,这样同一个文件的第二次执行速度更快(并且省去了将源代码重新编译为字节码的过程)。这种“中间语言”运行在虚拟机之上,虚拟机从字节码中执行相应的机器代码。请注意,不同Python虚拟机上的字节码不一定通用,也不一定兼容不同的Python版本。class--用于为用户定义的对象创建模板的类。类定义通常包含对该类的实例进行操作的方法定义。类变量——类变量是在类中定义的变量,只能在类级别修改(而不是在类的实例中)。coercion--强制在涉及两个相同类型参数的操作中,一种类型的实例被隐式转换为另一种类型。比如int(3.15)把原来的浮点数转换成整数3,但是在3+4.5中,参数的类型不一致(一个是int,一个是float),必须将两者进行转换到要添加的相同类型。否则将引发TypeError。如果没有类型转换机制,程序员将不得不将所有兼容的参数规范化为相同的类型,例如写float(3)+4.5而不是3+4.5。coroutine--Coroutines协程是一种更通用的子例程形式。子程序可以在一个点进入,在另一个点退出。可以在许多不同的点进入、退出和恢复协程。它们可以用asyncdef语句实现。请参阅PEP492。协程函数——返回协程对象的协程函数。协程函数可以使用asyncdef语句定义,并且可以包含await、asyncfor和asyncwith关键字。这些特性由PEP492引入。CPythonPython编程语言的规范实现,发布在python.org上。必要时使用术语CPython来将此实现与其他实现(例如Jython或IronPython)区分开来。decorator--装饰器返回一个函数,其返回值是另一个函数,通常使用@wrapper语法形式进行函数转换。装饰器的常见示例包括classmethod()和staticmethod()。装饰器语法只是一个语法糖,下面两个函数定义在语义上是完全等价的:deff(...):...f=staticmethod(f)@staticmethoddeff(...):...同样的概念也适用于类,但通常使用得较少。有关装饰器的详细信息,请参阅函数定义和类定义文档。dictionary–dictionary一个关联数组,其中任何键都映射到相应的值。键可以是任何具有__hash__()和__eq__()方法的对象。在Perl语言中称为散列。EAFP是“请求宽恕比许可更容易”的首字母缩写词。Python的这种通用编码风格假定所需的键或属性存在,如果假设错误则捕获异常。这种简洁快速的风格的特点是大量使用try和except语句。相反的是所谓的LBYL风格,在C和许多其他语言中很常见。expression--表达式的语法单元,计算结果为一个值。换句话说,表达式是表达元素的集合,例如文字、名称、属性访问、运算符或最终返回值的函数调用。与许多其他语言不同,并非所有语言结构都是表达式。还有一些语句不能用作表达式,例如while。赋值也是一个语句而不是表达式。扩展模块——扩展模块是用C或C++编写的模块,它使用Python的CAPI与语言核心和用户代码进行交互。文件对象——一个文件对象,它公开一个面向文件的API以使用底层资源(使用read()或write()等方法)。根据其创建方式,文件对象可以处理对实际磁盘文件、其他类型的存储或通信设备(例如标准输入/输出、内存缓冲区、套接字、管道等)的访问。文件对象也称为类文件对象或流。实际上有三类文件对象:原始二进制文件、缓冲二进制文件和文本文件。它们的接口定义在io模块中。创建文件对象的规范方法是使用open()函数。floordivision–floordivision数学除法四舍五入到最接近的整数。楼层除法运算符是//。例如,表达式11//4的计算结果为2,这与返回2.75的浮点数的真正除法相反。请注意(-11)//4返回-3,因为这是-2.75向下舍入的结果。参见PEP238。function–函数可以向调用者返回一些值的一组语句。您还可以向它传递零个或多个参数,并在函数体的执行中使用。另请参阅有关参数、方法和函数定义的部分。future是一个伪模块,程序员可以使用它来启用与当前解释器不兼容的新语言功能。通过导入future模块并评估其中的变量,您可以看到新功能何时首次添加到语言中以及何时成为默认功能:>>>>>>import__future__>>>__future__.division_Feature((2,2,0,'alpha',2),(3,0,0,'alpha',0),8192)garbagecollection--垃圾收集释放不再使用的内存空间的过程。Python通过引用计数和可以检测和中断循环引用的循环垃圾收集器执行垃圾收集。可以使用gc模块控制垃圾收集器。全局解释器锁——CPython解释器采用的一种机制,用于确保一次只有一个线程在执行Python字节码。这种机制通过设置对象模型(包括重要的内置类型,如dict)针对并发访问的隐式安全性来简化CPython实现。锁定整个解释器可以更容易地在多个线程中运行解释器,但代价是牺牲了多个处理器上的并行性。但是,标准库或第三方库的某些扩展模块旨在在执行压缩或散列等计算密集型任务时释放GIL。此外,GIL总是在执行I/O操作时被释放。创建“自由线程”解释器(具有更细粒度的共享数据锁定)的努力从未成功,因为这会牺牲普通单处理器情况下的性能。相信克服此性能问题的措施将导致更复杂的实现,因此更难以维护。IDLEPython的IDE,“集成开发和学习环境”的简称。是Python标准发行版中包含的基本程序员和解释器环境。导入路径——导入路径是一个位置列表(或路径条目),模块的基于路径的查找器将使用这些位置来查找导入目标。导入时,此位置列表通常来自sys.path,但子包也可能来自父包的路径属性。iterable——一个可迭代的对象,能够一个一个地返回它的成员项。可迭代对象的示例包括所有序列类型(例如list、str和tuple)以及某些非序列类型,例如dict、文件对象和任何定义__iter__()方法或实现__getitem__()方法的对象实现序列语义。自定义类对象。可迭代对象用于for循环和许多其他需要序列的地方(zip()、map()...)。当可迭代对象作为参数传递给内置函数iter()时,它会返回该对象的迭代器。此迭代器适用于值集合的一次性遍历。使用可迭代对象时,通常不需要调用iter()或自己处理迭代器对象。for语句会自动为您处理,创建一个临时的未命名变量来保存循环之间的迭代器。请参见迭代器、序列和生成器。迭代器——用于表示数据流序列的迭代器对象。重复调用迭代器的__next__()方法(或将其传递给内置函数next())将逐一返回流中的项。当没有数据可用时,将引发StopIteration异常。此时迭代器对象已经用完所有项,继续调用它的__next__()方法只会再次引发StopIteration异常。迭代器必须有一个__iter__()方法来返回迭代器对象本身,因此迭代器也必须是可迭代对象,并且可以在大多数其他可迭代对象适用的情况下使用。一个值得注意的例外是多次重复访问可迭代项的代码。每次将容器对象(例如列表)传递给iter()或在for循环中使用它时,都会生成一个新的迭代器。如果您尝试在这种情况下使用迭代器,它将返回在上一次迭代期间耗尽的相同迭代器对象,使其看起来像一个空容器。lambda是一个匿名内联函数,由一个在调用时计算的表达式组成。创建lambda函数的语法是lambda[parameters]:expression。list--列出Python的内置序列。虽然命名为列表,但它更像是其他语言中的数组而不是链表,因为访问一个元素具有O(1)的时间复杂度。映射——映射一个支持任意键查找的容器对象,并实现在Mapping或MutableMapping抽象基类中指定的方法。此类对象的示例包括dict、collections.defaultdict、collections.OrderedDict和collections.Counter。metaclass--metaclass用于创建类的类。类定义包含类名、类字典和基类列表。元类负责接受以上三个参数并创建相应的类。大多数面向对象的编程语言都提供了默认的实现。Python的特别之处在于您可以创建自定义元类。大多数用户永远不需要这个工具,但是当需要出现时,元类提供了一个强大而优雅的解决方案。它们已被用于记录属性访问、添加线程安全、跟踪对象创建、实现单例以及许多其他任务。方法——在类内部定义的方法函数。如果作为此类实例的属性调用,该方法将把实例对象作为它的第一个参数(通常命名为self)。见功能。模块——模块这个对象是Python代码的一个组织单元。每个模块都有自己的命名空间,可以包含任意Python对象。可以通过导入操作将模块加载到Python中。另见包。namespace--命名空间命名空间是存储变量的地方。有局部的、全局的和内置的命名空间,以及对象内(方法内)的嵌套命名空间。命名空间通过防止命名冲突来支持模块化。例如,函数builtins.open和os.open()可以通过它们各自的命名空间来区分。命名空间还通过明确哪个模块实现哪个功能来帮助提高可读性和可维护性。例如,`random.seed()或itertools.islice()`明确表示这些功能分别由random和itertools模块实现。命名空间包--PEP420引入的包,仅用作子包的容器。命名空间包可以没有物理表示,并且它们的描述与常规包不同,因为它们没有__init__.py文件。另见模块。对象——对象任何具有状态(属性或值)和预定义行为(方法)的数据。object也是任何新式类的最顶层基类名称。package–package一个Python模块,可以包含子模块或递归地包含子包。从技术上讲,包是具有路径属性的Python模块。另请参见常规包和命名空间包。parameter--函数(或方法)定义中命名为实体的形式参数,指定函数可以接受的参数(或在某些情况下,多个参数)。形参有五个:positional-or-keyword:位置或关键字,指定一个实参,可以作为位置参数或关键字参数传入。这是默认的参数类型,比如下面的foo和bar:deffunc(foo,bar=None):...positional-only:positionalonly,指定一个参数只能按位置传递。Python中没有为仅位置参数定义语法。但是一些内置函数只有位置参数(例如abs())。keyword-only:仅关键字,指定一个参数只能通过关键字传入。仅关键字参数可以通过在函数定义的参数列表中包含单个可变位置参数,或通过在多个可变位置参数之前定义,例如下面的kw_only1和kw_only2:deffunc(arg,*,kw_only1,kw_only2):...var-positional:变量位置,指定可以提供任意数量的位置参数的序列(除了那些已经被其他形式参数接受的参数)。可以通过在参数名称前加上*来定义此类参数。例如下面的args:deffunc(*args,**kwargs):...var-keyword:变量关键字,指定可以提供任意数量的关键字参数(附加在已经被其他形式参数接受的关键字参数之后).这样的参数可以通过在参数名前加上**前缀来定义,比如上面的kwargs。形式参数既可以指定可选参数也可以指定必需参数,也可以为一些可选参数指定默认值。路径条目——路径条目导入路径中的单个位置,基于路径的查找器将使用它来查找要导入的模块。PEP“Python增强提案”的首字母缩写词。PEP是一种设计文档,用于向Python社区提供信息,或描述Python的一项新功能及其进展或环境。PEP应提供精确的技术规范和所提议功能的基本原理。PEP应该被用作提出主要新特性、收集社区对特定问题的反馈以及记录必须合并到Python中的设计决策的选择机制。PEP的作者负责在社区内建立共识,并应记录分歧。请参阅PEP1。sequence–一个可迭代对象,它通过__getitem__()特殊方法使用整数索引支持高效的元素访问,并定义了一个返回序列长度的__len__()方法。内置序列类型有list、str、tuple和bytes。请注意,虽然dict也支持__getitem__()和__len__(),但它被认为是映射而不是序列,因为它使用任意不可变键而不是整数进行查找。collections.abc.Sequence抽象基类定义了一个更丰富的接口,它在__getitem__()和__len__()之外添加了count()、index()、__contains__()和__reversed__()。可以使用register()显式注册实现此扩展接口的类型。切片——切片通常只包含特定对象序列的一部分。切片是通过使用下标表示法创建的,在[]中给出几个用冒号分隔的数字,例如variable_name[1:3:5]。括号(下标)符号在内部使用切片对象。语句——语句是程序段(代码“块”)的单元。语句可以是表达式或带有关键字(如if、while或for)的结构。文本编码——用于将Unicode字符串编码为字节字符串的文本编码。type–type类型决定了一个Python对象属于哪一种;每个对象都有一个类型。要知道对象的类型,您可以访问其__class__属性,或使用type(obj)获取它。类型提示——类型提示注释指定变量、类属性、函数参数或返回值的预期类型。类型提示是可选的,对于Python不是必需的,但它们与静态类型分析工具一起使用,并协助IDE完成代码完成和重构。可以使用typing.get_type_hints()访问全局变量、类属性和函数的类型提示,但不能访问局部变量。有关此功能的详细描述,请参阅typing和PEP484。通用换行符一种解释文本流的方式,将以下所有符号识别为行尾标记:Unix行结束约定“n”、Windows约定“rn”和旧的Macintosh约定“r”.有关更多使用说明,请参阅PEP278和PEP3116以及bytes.splitlines()。虚拟机——虚拟机是完全通过软件定义的计算机。Python虚拟机可以执行字节码编译器生成的字节码。ZenofPython--ZenofPython列出了Python设计的原则和哲学,以帮助理解和使用该语言。在PEP8中定义。每个版本的具体内容可能不同。要查看当前版本的具体内容,在交互模式提示下输入“importthis”即可。本文由博客多发平台OpenWrite发布!