首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

流畅 Python 第二版(GPT 重译)(七)

大多数 collections.abc 模块中定义,但也有其他。例如,您可以 io numbers 包中找到 ABCs。但最常用 collections.abc 中。...因此,只有少数 Python 开发人员可以创建 ABC,而不会对其他程序员施加不合理限制不必要工作。 现在 ABC 类型提示中有更多潜在用途,以支持静态类型。...²⁶ 另一方面,Mypy 某种程度上“意识到”内置intfloat可以转换为complex,尽管 typeshed 中只有内置complex有一个__complex__方法。...它也可以 Doug 出色PyMOTW—Python 本周模块网站上找到。...关于这个问题一个简短描述可以 PyPy 文档“PyPy CPython 之间区别”部分中找到,“内置类型子类”。

12810

流畅 Python 第二版(GPT 重译)(四)

可以Python 3.8 有什么新特性”PEP 570中找到其他仅限位置参数示例。...标准库、外部包或用户定义具体——FrenchDeck、Vector2dDuck——也可以类型提示中使用。 抽象基类型提示中也很有用。...内置dictcollections以及collections.abc映射类型 Python ≥ 3.9 中接受该表示法。...请记住,collections.abc大多数 ABCs 其他具体,以及内置集合,都支持类似 collections.deque[str] 泛型类型提示符号,从 Python 3.9 开始。...截至 Python 3.10,标准库没有注释,但 Mypy、PyCharm 等可以 Typeshed 项目中找到必要类型提示,形式为存根文件:特殊带有 .pyi 扩展名源文件,具有带注释函数方法签名

31710
您找到你想要的搜索结果了吗?
是的
没有找到

Python抽象基定义与使用

我们写Python基本不需要自己创建抽象基,而是通过鸭子类型来解决大部分问题。《流畅Python》作者使用了15年Python,但只项目中创建过一个抽象基。...注意,Python只会在运行时实例化FrenchDeck2时真正检查抽象方法实现,如果未实现会抛出TypeError异常,提示Can't instantiate abstract class之类。...定义抽象基 本小结可以跳过。不过了解抽象基定义有助于阅读标准库其他包中抽象基源码。...注册方式有两种: register方法 Python3.3以前只能使用register方法,比如collections.abc模块源码中,把内置类型tuple、str、rangememoryview...白鹅类型鸭子类型Python动态特性,它们共同点是,只要长像,Python就不会做强制检查,鸭子类型是针对普通子类而言,白鹅类型是针对抽象基虚拟子类而言

1.9K30

流畅 Python 第二版(GPT 重译)(九)

我们“使用 ABC 进行结构类型检查”中看到了它。 ② _check_methods 遍历__mro__以检查方法是否在其基中实现。...在下面的表格中,我总结了两打这样函数,来自内置itertoolsfunctools模块。为方便起见,我根据高级功能对它们进行了分组,而不管它们在哪里定义。...;虽然不是必需,但可以使下一个类型提示更易读。...现在让我们用一个关于协变逆变类型提示对协程进行总结。 经典协程通用类型提示 回到“逆变类型”,我提到typing.Generator是少数几个具有逆变类型参数标准库类型之一。...¹⁶ 自 Python 3.7 起,typing.Generator 其他与 collections.abc ABCs 对应类型被重构,使用了对应 ABC 包装器,因此它们泛型参数 typing.py

17310

自学Python一 迷茫中开端!

Python 是 What? 1.解释性语言(运行前不需要编译,如php)   2.动态类型语言(声明变量时候不需要说明变量类型) 面向对象Python   Python非常适合oop。...函数都是第一对象,函数既能返回函数类型可以接受函数输入。支持通过组合继承方式定义。...对于一个list,打印出其所有元素怎么办,首先想到是for循环遍历,python中你可以这样: 1 >>>L = list(range(100)) 2 >>>L 3 [0,1,2,3,4,5....二、迭代   这个就不用多说了,c#中经常用到,访问数组,List,字典等等时候经常foreach了!Python中也一样,只要是Iterable类型可以进行迭代!...内置enumerate可以变列表变成索引-元素对 18 >>>for i,value in enumerate(['a','b','c'])" 19 print(i,value

49220

流畅 Python 第二版(GPT 重译)(八)

在运行时读取类型提示 导入时,Python 读取函数、模块中类型提示,并将它们存储名为 __annotations__ 属性中。例如,考虑 示例 15-14 中 clip 函数。...本章其余部分涵盖了泛型,从如何定义一个可以由用户参数化泛型开始。 实现一个通用 示例 13-7 中,我们定义了Tombola ABC:一个类似于宾果笼接口。...然而,该函数可能对某些注解不可靠,我们看到 Python 核心开发人员仍在努力找到一种方法,减少对 CPU 内存使用影响同时使类型提示在运行时可用。...Python 灵活性、可用性安全性之间取得了良好平衡,通过施加一些限制: 我们不能改变内置类型运算符含义。 我们不能创建新运算符,只能重载现有的运算符。...对于+=,情况更加清晰:左侧对象原地更新,因此对结果类型没有疑问。 提示 通过观察list内置类型工作方式,我验证了++=对比行为。

14610

流畅 Python 第二版(GPT 重译)(十三)

作为对象 像 Python大多数程序实体一样,也是对象。每个 Python 数据模型中都有一些属性,这些属性Python 标准库》内置类型”章节中 “4.13....这两个构建器都会读取用户class语句中类型提示以增强。这些类型提示还允许静态类型检查器验证设置或获取这些属性代码。...② 这是一个最小Callable类型提示;constructor参数类型返回类型都隐含为Any。 ③ 对于运行时检查,我们使用callable内置函数。...由于__class_getitem__,Python 核心开发人员不必为内置类型编写新来实现__getitem__,以便我们可以编写像list[int]这样通用类型提示。...内置函数”页面的type文档,以及Python 标准库中“内置类型”章节“4.13. 特殊属性”也是必读

10810

Python名词解释

Python 自带许多内置 ABC 用于实现数据结构( collections.abc 模块中)、数字( numbers 模块中)、流( io 模块中)、导入查找器和加载器( importlib.abc...interactive -- 交互 Python 带有一个交互式解释器,即你可以解释器提示符后输入语句表达式,立即执行并查看其结果。...具名元组可以是一个内置类型例如 time.struct_time,也可以通过正规定义来创建。一个完备具名元组还可以通过工厂函数 collections.namedtuple() 来创建。...内置序列类型有 list、str、tuple bytes。...全局变量、类属性函数类型提示可以使用 typing.get_type_hints() 来访问,但局部变量则不可以。 参见 typing PEP 484,其中有对此功能详细描述。

1.5K50

Python内置容器不止有listdictsettuple

原来,python还有这么多强大内置容器! 01 初识collections Collections模块是python内置模块之一,提供了很多容器类型。...按照官方文档介绍,它被用作是对python通用内置类型(list、dict、set、tuple)一个替代。...最初collections模块类型众多,python3.3版本中将一部分抽象数据类型写进了collections.abcabc,abstract base classes)中,后续将在python3.9...内置类型dict子类,支持dict所有操作,重点是初始化时可以接收一个default_factory作为字典默认生成类型。...05 总结 collections模块提供了很好容器型数据结构,对于python通用内置类型list、dict等是一个很好扩展补充 deque实现了一个双端队列,可以实现O(1)复杂度双向添加弹出元素以及扩展

75120

让你Python代码拥有类型提示

Python是一种动态类型语言,这意味着我们在编写代码时候更为自由,但是与此同时IDE无法向静态类型语言那样分析代码,及时给我们相应提示。...为了解决这个问题,Python 3.6 新增了几个特性PEP 484PEP 526,帮助编辑器为我们提供更智能提示。这些新特性不会影响语言本身,只是增加一点提示。...当你使用比较智能开发工具比如PyCHarm时,就会感觉到类型提示方便之处。 变量注解 首先先看看变量注解。它语法某些类型后置语言类似。...# 变量注解 a: int = 5 b: bool = True f: float = 5.0 s: str = "abc" 声明类型之后,编辑器IDE就会读取到这个类型注解,然后给予我们相应提示。...程序在运行时候行为完全不变。 如果是自己编写,也可以用作变量注解。

1.2K50

这些方法,能够让你Python程序快如闪电

本文将介绍如何提升 Python 程序效率,让它们运行飞快! 计时与性能分析 开始优化之前,我们首先需要找到代码哪一部分真正拖慢了整个程序。...有时程序性能瓶颈显而易见,但当你不知道瓶颈何处时,这里有一些帮助找到性能瓶颈办法: 注:下列程序用作演示目的,该程序计算 e X 次方(摘自 Python 文档): # slow_program.py...从输出结果我们可以看到 exp 函数是罪魁祸首(惊不惊喜,意不意外),现在我们可以更加专注于计时性能分析了…… 计时专用函数 现在我们知道了需要关注哪里,那么我们可能只想要给运行缓慢函数计时而不去管代码其他部分...使用这些策略,可以对程序性能产生巨大影响,有时甚至可以带来高达 30% 提速。 使用内置数据类型 这一点非常明显。内置数据类型非常快,尤其相比于树或链表等自定义类型而言。...这主要是因为内置数据类型使用 C 语言实现,使用 Python 实现代码在运行速度上和它们没法比。

49720

matinal:Python变量定义使用

注意,变量是标识符一种,它名字不能随便起,要遵守 Python 标识符命名规范,还要避免 Python 内置函数以及 Python 保留字重名。...>>> url = "http://c.com/" >>> str = “测试:" + url #字符串拼接 >>> print(str) Python 是弱类型语言 类型编程语言中,定义变量时要指明变量类型...类型语言相对应是弱类型语言,Python、JavaScript、PHP 等脚本语言一般都是弱类型。...注意,弱类型并不等于没有类型!弱类型是说书写代码时不用刻意关注类型,但是在编程语言内部仍然是有类型。...我们可以使用 type() 内置函数检测某个变量或者表达式类型,例如: >>> num = 10 >>> type(num) >>> num = 15.8 >>> type

17950

这些方法,能够让你Python程序快如闪电

本文将介绍如何提升 Python 程序效率,让它们运行飞快! ? 计时与性能分析 开始优化之前,我们首先需要找到代码哪一部分真正拖慢了整个程序。...有时程序性能瓶颈显而易见,但当你不知道瓶颈何处时,这里有一些帮助找到性能瓶颈办法: 注:下列程序用作演示目的,该程序计算 e X 次方(摘自 Python 文档): # slow_program.py...从输出结果我们可以看到 exp 函数是罪魁祸首(惊不惊喜,意不意外),现在我们可以更加专注于计时性能分析了…… 计时专用函数 现在我们知道了需要关注哪里,那么我们可能只想要给运行缓慢函数计时而不去管代码其他部分...使用这些策略,可以对程序性能产生巨大影响,有时甚至可以带来高达 30% 提速。 使用内置数据类型 这一点非常明显。内置数据类型非常快,尤其相比于树或链表等自定义类型而言。...这主要是因为内置数据类型使用 C 语言实现,使用 Python 实现代码在运行速度上和它们没法比。

47420

通过内置对象理解 Python(十)

type 内置函数可以用于对象类型检查,就像这样: def print_stuff(stuff): if type(stuff) is list: for item in stuff...也可以说,函数 type 没有考虑继承问题,如果改用 isinstance ,它不仅检查一个对象是否是一个实例,它还检查该对象是否是一个子类实例: >>> class MyList(list):...为此,Python 中有一个含有各种内置类型”,可以用它们来测试某些“行为”,而不是测试本身。...我们例子中,行为是作为其他对象容器,称之为 Container: >>> from collections.abc import Container >>> items = ('spam', 'eggs...每个容器对象类型都会在 Container 基检查中返回 True , issubclass 也行之有效: >>> from collections.abc import Container >>>

32830

通过内置对象理解 Python(九)

type 内置函数可以用于对象类型检查,就像这样: def print_stuff(stuff): if type(stuff) is list: for item in stuff...也可以说,函数 type 没有考虑继承问题,如果改用 isinstance ,它不仅检查一个对象是否是一个实例,它还检查该对象是否是一个子类实例: >>> class MyList(list):...为此,Python 中有一个含有各种内置类型”,可以用它们来测试某些“行为”,而不是测试本身。...我们例子中,行为是作为其他对象容器,称之为 Container: >>> from collections.abc import Container >>> items = ('spam', 'eggs...每个容器对象类型都会在 Container 基检查中返回 True , issubclass 也行之有效: >>> from collections.abc import Container >>>

28320

Python每天五分钟-数据类型

其中整型浮点型都是数字类型Python中还有其他两个数字类型长整型(long)、复数(complex)。 此外,Python还提供了字典、列表等, 还允许创建自定义数据类型 。...注意:long 类型只存在于 Python2.X 版本中, 2.2 以后版本中,int 类型数据溢出后会自动转为long类型。... Python3.X 版本中 long 类型被移除,使用 int 替代 ---- 整型 整型即整数,Python可以处理任意大小整数,其中也包括负整数。...---- 列表 Python内置了一种有序集合来存储数据,与php中数组非常相似。 列表中元素值可以是任意数据类型。...从输出来看,元祖内容确实变化了,可是变化并不是元祖元素,而是元祖中列表,列表中元素是可以进行增加删除修改 字典 Python内置了字典(dict)数据类型,使用键值(key:value

60220

流畅 Python 第二版(GPT 重译)(一)

这些章节解释了如何构建自己集合、抽象基ABC)和协议,以及如何处理多重继承,以及如何在有意义时实现运算符重载。第十五章继续介绍类型提示。...Collection API 图 1-2 展示了该语言中基本集合类型接口。图中所有的都是抽象基ABC)。第十三章涵盖了 ABC collections.abc模块。...ABC 引入了许多我们现在认为 “Pythonic” 想法:对不同类型序列通用操作、内置元组映射类型、缩进结构、无需变量声明类型等等。Python 如此用户友好并非偶然。...内置具体序列类型实际上并没有子类化SequenceMutableSequence抽象基ABC),但它们是注册到这些 ABC 虚拟子类——我们将在第十三章中看到。...提示 您还可以min()max()内置函数以及标准库中其他函数(例如itertools.groupby()heapq.nlargest())中使用可选关键字参数key。

6000

如何使 Python 程序快如闪电?这里有妙招

所以,让我们来证明那些人是错——让我们看看如何提高 Python 程序性能并使它们变得非常快! 时间性能 开始优化任何代码之前,我们首先需要找出代码哪些部会减慢整个程序速度。...有时,程序瓶颈可能很明显,但如果你不知道它在哪里,那么你可以从下面几个地方找到它: 注意:这是我用于演示程序,它将 e 计算为 X 幂(取自 Python 文档): #...我基本上不会向你展示一些能够神奇地解决性能问题技巧代码片段。这更多是关于一般想法策略,当你使用这些策略时,它们可以对性能产生巨大影响,某些情况下甚至可以提高 30% 速度。...使用内置数据类型 这一点很明显。内置数据类型非常快,特别是与我们自定义类型(如树或链列表)相比。这主要是因为内置代码是用 C 语言实现,在用 Python 编写代码时,我们速度上无法与之相比。...我编写每个作用域,因为它不仅仅和局部变量全局变量使用有关。实际上,函数中局部变量、级属性全局之间查找速度也存在差异。

56210

Python内置数据结构之字符串

例如: In[1]: print('含有中文字符串str') 含有中文字符串str 对于单个字符编码,Python提供了ord()内置函数来获取字符整数表示;chr()内置函数则把编码转换为对应字符...接下来介绍Python字符串常用方法,看看字符串日常当中是怎么用。...') i love python join+拼接字符串难以控制格式。...尽量使用内置这种format方式来格式化字符串。 另外,也可以使用字典方式实现字符串格式化。...; 字符串可以进行索引、切片、迭代等操作; 字符串内置了很多方法供我们使用; Python3中字符默认是Unicode格式; 格式化总结 占位符与参数不匹配,会抛出异常 {} 按照顺序,使用位置参数

1.5K80
领券