
FluentPython
文章平均质量分 95
进一步提升python开发水平
蓦然回首却已人去楼空
这个作者很懒,什么都没留下…
展开
-
minhash-大模型输入前的去重
本文介绍了使用MinHash和局部敏感哈希(LSH)进行文本去重的方法。首先将文档切分为n-gram单元,然后为每个n-gram生成多个哈希值以提高相似性估计的准确性。接着通过取最小值得到文档的MinHash签名,再使用LSH将签名分条带处理,将相同条带值的文档聚到同一桶中备选。这种方法能有效识别相似文档,在大批量文本处理中显著减少计算量,平衡了计算效率和相似性检测的需求。MinHash通过多哈希值提高了鲁棒性,而LSH的分条带策略则灵活控制了相似性阈值。原创 2025-05-27 17:26:33 · 935 阅读 · 0 评论 -
CHAPTER 17 Iterators, Generators, and Classic Coroutines
迭代是数据处理的基础:程序对数据序列进行计算,这些数据序列涵盖从像素到核苷酸等各种类型。如果数据无法全部存入内存,我们就需要按需惰性获取数据——一次获取一个数据项。这正是迭代器的作用。本章将展示迭代器设计模式是如何内置于Python语言中的,这样你就无需手动编写相关代码。Python中的每个标准集合都是可迭代的。for循环列表、字典和集合推导式解包赋值集合实例的创建Python如何使用内置的iter()函数处理可迭代对象如何在Python中实现经典的迭代器模式。原创 2025-05-07 14:28:03 · 748 阅读 · 0 评论 -
CHAPTER 11 A Pythonic Object
对于一个库或框架而言,符合Python风格意味着让Python程序员能够尽可能轻松自然地掌握如何完成一项任务。—— 马丁·法森(Martijn Faassen),Python和JavaScript框架的创造者。得益于Python数据模型,你自定义的类型可以表现得和内置类型一样自然。你只需实现让对象按预期行为表现所需的方法即可。在前面的章节中,我们研究了许多内置对象的行为。现在,**我们将构建表现得像真正Python对象的用户自定义类。原创 2025-04-21 16:19:32 · 394 阅读 · 0 评论 -
CHAPTER 8 Type Hints in Functions
Python 是一种动态类型语言,这意味着变量类型在运行时才能确定,而不是像某些静态类型语言(如 Java、C++)那样在编译时就需要定义类型。渐进式类型系统是一种用来平衡动态类型和静态类型的方式,允许我们在 Python 中逐步引入类型提示,如有必要,也可以完全不使用类型提示。渐进式类型系统是 Python 的一大特色,带来了类型安全性和开发效率之间的平衡。类型提示可选,无需重构已有代码。可以辅助静态工具发现潜在错误。类型注解不会影响 Python 的运行时行为,也不会提升性能。原创 2025-03-24 11:43:47 · 1044 阅读 · 0 评论 -
CHAPTER 10 Design Patterns with First-Class Functions
策略模式是一种行为设计模式,用于定义一组算法,将每个算法封装起来,使它们可以互换使用,同时使使用这些算法的客户端独立于算法的实现。定义(Design Patterns 书中定义)“定义一组算法,将每个算法封装起来,并使它们可以互换使用。策略模式允许算法独立于使用它的客户而变化。在本例中,策略模式用于在电子商务系统中计算折扣,具体折扣逻辑取决于不同的促销策略。这些数据类用于表示客户、订单项和订单的基本信息。name: str# 上下文类:管理订单数据和执行折扣运算逻辑"""计算订单总金额"""原创 2025-03-24 11:42:10 · 670 阅读 · 0 评论 -
python 执行顺序
MRO (方法解析顺序) 是 Python 用来在多继承情况下决定方法查找顺序的规则。它定义了解决方法或属性时的搜索顺序——即在类继承关系中先搜索哪个类的定义。你可以通过 或 查看类的 MRO。分析:输出:当调用 时,Python 按照 MRO 顺序查找方法:首先在类 中查找,但类 没有定义 方法。接着查找 类,发现 定义了 方法,于是执行 的 ,输出:更复杂的继承关系让我们看一个更加复杂的多继承例子。分析:当调用 时,Python 遵循 MRO:先原创 2025-04-21 20:42:38 · 985 阅读 · 0 评论 -
CHAPTER 9 Decorators and Closures
装饰器本质上是一个可调用对象(通常是函数),它接受另一个函数作为参数,并可能会对这个函数进行处理(添加功能、修改行为等),然后返回一个新的函数或可调用对象。换句话说,装饰器可以用来包装另一个函数,从而在调用这个被包装的函数时实现新的功能。举个例子,我们定义了一个装饰器decorateprint(f'hexid')@registerdef f1():@registerdef f2():在函数定义时(导入时间)立即执行装饰器代码。常用于动态注册、函数增强或替换。原创 2025-03-20 11:07:23 · 920 阅读 · 0 评论 -
CHAPTER 7 Functions as First-Class Objects
开启了新一篇章,之前的章节1-6都在讲数据结构,从这一新篇章开始,讲的是函数即对象。因为本文会碰到map等用到迭代器的方法,所以在此之前我们先将这个介绍清楚。好的,我们现在进一步深入,将迭代器与 计算机系统中的内存分配和使用 联系起来,通过图解的形式描述内存是如何被迭代器利用的,并解释为什么它能保持高效。在计算机中,内存的使用分为以下几个主要部分:迭代器的特点:迭代器不一次性把所有数据加载到 堆 或 栈 中,而是动态生成数据,仅使用栈或少量堆空间来存储计算上下文(比如当前索引、已生成的位置)。代码:内存原创 2025-03-10 16:46:24 · 978 阅读 · 0 评论 -
CHAPTER 6 Object References, Mutability, and Recycling
共享引用的影响l1[1]和l2[1]同时指向内层列表。因此,对内层列表的修改会互相影响。等价于,直接修改了列表,使l1[1]同样变化。不可变对象的行为创建了一个新的元组并重新绑定到l2[2]。l1[2]保持原始元组(7, 8, 9),两者不再共享。浅拷贝bus2是bus1的浅拷贝,二者共享passengers列表的引用。修改bus1的passengers会影响bus2。深拷贝bus3是bus1的深拷贝,二者拥有独立的passengers列表。修改不影响。del。原创 2025-03-05 22:00:54 · 837 阅读 · 0 评论 -
CHAPTER 5 Data Class Builders
namedtuple特性普通元组namedtupledataclass内存效率高高较低字段访问方式按索引按名或索引按名可变性不可变不可变默认可变默认值支持不支持支持支持适合使用场景无需字段名的简易结构轻量的、不可变的数据对象结构更灵活、复杂的数据模型在 Python 中,NamedTuple是一种结合了元组的不可变特性和类的可读性的新型构造器。它允许我们定义类似类的结构体,同时支持通过名称访问字段的值。随着 Python 类型注解的引入,原创 2025-03-05 22:00:00 · 921 阅读 · 0 评论 -
第4章 Unicode 文本和字节序列
在计算机中,字符需要一种数字方式来表示,这就是代码点的作用。可以把代码点理解为每个字符的身份证号。在Unicode标准中,这个身份证号是一个十六进制的数字,并以“U+”开头。举几个例子:字母“A”:代码点是U+0041。这里的“0041”是一个十六进制数字,转换成十进制就是65。这意味着在Unicode中,“A”这个字符的唯一标识就是U+0041。欧元符号“€”:代码点是U+20AC。十六进制的“20AC”转换成十进制是8364。原创 2025-02-25 21:46:18 · 946 阅读 · 0 评论