Fluent Python
3
guoyunfei2018
这个作者很懒,什么都没留下…
展开
-
Fluent Python 3函数 7接口:从协议到抽象基类
1.接口和协议duck-typing -- 鸭子类型指一种编程风格,它并不依靠查找对象类型来确定其是否具有正确的接口,而是直接调用或使用其方法或属性(“看起来像鸭子,叫起来也像鸭子,那么肯定就是鸭子。”)由于强调接口而非特定类型,设计良好的代码可通过允许多态替代来提升灵活性。鸭子类型避免使用type()或isinstance()检测。(但要注意鸭子类型可以使用抽象基类作为补充。...原创 2020-01-19 10:53:02 · 302 阅读 · 0 评论 -
Fluent Python 3函数 8子类化内置类型和多重继承
1.不要子类化内置类型直接子类化内置类型(如 dict、list 或 str)容易出错, 因为内置类型的方法通常不会调用子类覆盖的方法。示例:>>> class DoppelDict(dict): def __setitem__(self, key, value): super().__setitem__(key, [value] * 2) >&...原创 2020-01-19 15:29:21 · 186 阅读 · 0 评论 -
Fluent Python 4控制流程
1.可迭代对象、迭代器、生成器Python __iter__ 和迭代器(iterator)Python生成器及创建数据通道Python Cookbook 4迭代器和生成器2.上下文管理器和 else 块7.3 如何让对象支持上下文管理器3.协程4.使用期物处理并发5.使用 asyncio 包处理并发...原创 2020-02-08 16:53:47 · 257 阅读 · 0 评论 -
Fluent Python 3函数 9重载运算符
运算符重载的名声并不好, 这个语言特性被滥用,导致缺陷和意料之外的性能瓶颈。 但是,如果使用得当,API 会变得好用,代码会变得易于阅读。1.重载运算符的限制规定:不能重载内置类型的运算符;不能新建运算符, 只能重载现有的;某些运算符不能重载——is、 and、 or 和 not(不过位运算符&、 | 和 ~ 可以)2. 一元运算符- 取负,__neg__+取...原创 2020-02-08 15:58:42 · 172 阅读 · 0 评论 -
Fluent Python 3函数 6序列的修改、散列和切片
1原创 2020-01-15 16:16:32 · 310 阅读 · 0 评论 -
Fluent Python 3函数 5符合Python风格的对象
目录1.用特殊方法实现一个2D向量类2.classmethod与staticmethod3.格式化显示4.私有属性和“受保护的”属性5.使用 __slots__ 类属性节省空间6.覆盖类属性本章的目的是说明,如何使用特殊方法和约定的结构,定义行为良好且符合 Python 风格的类。本章的特殊方法:所有用于获取字符串和字节序列表示形式的方法:__repr__、_...原创 2020-01-14 17:01:34 · 168 阅读 · 0 评论 -
Fluent Python 3函数 4面向对象惯用法
目录1.==和is2.元组的相对不可变性3.默认做浅复制4.函数的参数作为引用时4.1不要使用可变类型作为参数的默认值4.2防御可变参数5del 语句和垃圾回收6 弱引用6.1WeakValueDictionary6.2 弱引用的局限7Python对不可变类型施加的把戏1.==和is每个变量都有标识、类型和值。对象一旦创...原创 2020-01-06 10:52:18 · 225 阅读 · 0 评论 -
Fluent Python 3函数 3函数装饰器和闭包
目录1.装饰器的两个特性2.Python在被装饰函数定义完之后立即执行装饰器函数3 变量作用域4 闭包(嵌套函数)5 nonlocal 声明6 一个简单的计时装饰器7标准库中的装饰器8 叠放装饰器9 参数化的注册装饰器10参数化计时装饰器1.装饰器的两个特性装饰器是可调用的对象, 其参数是另一个函数(被装饰的函数) 。 装饰器可能会处理被装...原创 2020-01-05 10:58:40 · 192 阅读 · 0 评论 -
Fluent Python 3函数 2使用函数实现设计模式
1“策略”模式:定义一系列算法,把它们一一封装起来,并且使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。 电商领域有个功能明显可以使用“策略”模式,即根据客户的属性或订单中的商品计算折扣。 假如一个网店制定了几条折扣规则,并且一个订单一次只能享用一个折扣。程序如下:注:在下面示例中,我们把折扣方法作为参数手动传入,实际中,应该是系统以某种方式去选择...原创 2019-12-26 14:03:26 · 143 阅读 · 0 评论 -
Fluent Python 3函数 1一等对象
目录把函数视作对象高阶函数和匿名函数可调用对象函数的参数函数注解operator 模块functools.partial把函数视作对象编程语言理论家把“一等对象”定义为满足下述条件的程序实体:在运行时创建 ;能赋值给变量或数据结构中的元素 ;能作为参数传给函数 ;能作为函数的返回结果;在 Python 中,整数、字符串和字典都是一等对象...原创 2019-12-25 15:01:56 · 132 阅读 · 0 评论 -
Fluent Python 2数据结构 4文本和字节序列
目录4.1memoryview 和 struct4.2 编码、解码4.3 处理文本文件4.4为了正确比较而规范化Unicode字符串4.5Unicode文本排序(略)4.6支持字符串和字节序列的双模式API4.1memoryview 和 structstruct 模块提供了一些函数,把打包的字节序列转换成不同类型字段组成的元组,还有一些函数用于执行反...原创 2019-12-25 11:30:07 · 144 阅读 · 0 评论 -
Fluent Python 2数据结构 2字典和集合
目录3.1 字典推导3.2 setdefault3.3collections.defaultdict3.4collections模块中的变种字典#1OrderedDict#2collections.ChainMap#3collections.Counter#4collections.UserDict3.5 集合3.6 散列表3.6....原创 2019-12-24 14:28:25 · 188 阅读 · 0 评论 -
Fluent Python 2数据结构 1序列
目录一、序列2.1 列表推导和生成器表达式2.1.1 列表推导2.1.2生成器表达式2.2元组2.2.1 元组2.2.2 元组拆包2.2.3 collections.namedtuple2.3 切片2.3.1为什么切片、区间会忽略最后一个元素2.3.2 命名切片 slice(start, stop, step)2.3.3 切片赋值2.4 序...原创 2019-12-23 16:00:05 · 206 阅读 · 0 评论 -
Fluent Python 1Python 数据模型
目录1.1__getitem__和 __len__1.2 __repr__ 和 __str__1.3 特殊方法一览通过实现特殊方法,自定义数据类型可以表现得跟内置类型一样,从而让我们写出更具表达力的代码——或者说,更具 Python 风格的代码。1.1__getitem__和 __len__object.__getitem__(self,key)调用...原创 2019-12-23 11:38:05 · 169 阅读 · 0 评论