【Python】内置模块与协议

本文介绍了Python的内置模块builtins,包括其在启动解释器时自动导入的特性,以及内建类型如数值、序列、集合等。同时讲述了Python的协议与接口概念,强调协议作为非正式接口的重要性,以及Python中的鸭子类型原则。
摘要由CSDN通过智能技术生成

1.内置模块builins

Python内置模块/内建类型:直接嵌入在Python语言核心(Python内核)中的基础数据类型基础功能,这些类型不需要任何额外的模块导入就可以直接使用。

  • 即为builtins模块,详见于builtins.py 文件。当启动Python解释器时,builtins模块就会被自动导入。

  • 自定义模块:自己写的每个.py文件在Python中都被视为一个模块。例如,写了一个名为my_module.py的文件,则应使用import my_module来导入该模块从而访问其中定义的所有公共变量、函数、类等。而buitins模块不需要导入。

  • builtins.py 文件包含了内置模块的类、函数、常量的定义,但它本身并不是这些内建类型的真正实现。实际上,builtins.py 主要提供的是对这些内建对象的"视图"或"接口",而它们的真正实现,大多数是在CPython解释器的C代码。

这些内建类型大致可以分为以下几类:

  1. 数值类型:如 intfloatcomplex

  2. 序列类型:如 listtuplerangestrbytesbytearray

  3. 集合类型:如 setfrozenset

  4. 映射类型:如 dict

  5. 文件类型:如内建的 open 函数返回的文件对象。

  6. 布尔类型bool

  7. 其他类型:例如 NoneTypeNone 的类型)、ellipsisNotImplemented

  8. 函数和类:例如内建的 functionlambdaclassmethodstaticmethod 等。

  9. 模块类型

  10. 异常类型:所有的内建异常。

  • 除此之外,builtins 模块还包含了很多内建的函数(如 printlenopen 等)、常量(如 TrueFalseNone)以及其他实用的功能。

builtins 模块和内建类型紧密相关,它提供了直接访问这些类型和功能的途径,但它们的真正实现大多数都是在解释器的底层,用C语言编写的。

2.Python的协议与接口

Python有协议机制而无接口机制。

  1. 协议(protocol):

    • 在Python中,协议是一种非正式的接口,它没有明确的声明。它是一组特定的方法和属性的约定

    • 对象满足某个协议意味着该对象实现了该协议要求的方法和属性,但并不需要明确地声明它实现了该协议。

    • 例如,Python中的迭代器协议要求对象实现__iter__()__next__()方法。任何对象只要实现了这两个方法,它就满足迭代器协议,可以在for循环中使用。

  2. 接口:

    • 在许多其他编程语言中,接口是一种正式的结构,用于明确地定义一个类必须实现的方法和属性,但不提供具体实现

    • Python没有内置的接口机制,但协议起到了类似的作用。协议更加灵活,符合鸭子类型——“如果它像鸭子,叫声像鸭子,那它就是鸭子。”

    • 这体现了在Python中,我们更关心对象的行为(它实现了哪些方法)而不是它的实际类型。

      例如,你不需要显式地声明一个类为迭代器。只需实现__iter__()__next__()方法,它就自然而然地满足了迭代器协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值