随笔分类 - Fluent Python
摘要:python类中有三种方法,常见的是实例方法,另外两种是staticmethod装饰的静态方法,和classmethod装饰的类方法。 1、对比 流畅的python里,用一个例子进行了对比: (1)两个方法都不依赖于实例,类可以直接调用; (2)classmethod中,第一个参数为相应的类;sta
阅读全文
摘要:本节主要说明,对象与对象名称之间的区别。 一、变量不是盒子,而是标签 如图。在赋值语句中,y=A()中,先创建对象A,然后将左边的变量绑定到对象上。变量只不过是标注,因此无法阻止为对象贴上多个标签(别名) 二、标识、相等性和别名 1、对象一旦创建,标识就不会改变,标识可理解为对象在内存中的地址,is
阅读全文
摘要:一、装饰器的基础知识 1、装饰器是可调用对象,其参数是另一个函数(被装饰的函数)。装饰器会处理被装饰的函数,然后将其返回,或者将其替换成另一个函数或可调用对象。 替换成另一个函数 2、装饰器的两大特性,一是能把被装饰的函数替换成其他函数,二是装饰器在加载模块是立即执行。 二、python何时执行装饰
阅读全文
摘要:一等对象满足以下条件:运行时创建、能赋值给变量或数据结构中的元素、能作为参数传给函数、能作为函数的返回结果。 整数、字符串、字典以及函数,都是一等对象。 一、把函数视作对象 可以把函数进行赋值调用 二、高阶函数 1、接受函数为参数,或者把函数作为返回结果的函数是高阶函数(high-order)。 如
阅读全文
摘要:一、泛映射类型 1、标准库里的映射类型都是dict来实现的,它们有个共同的限制,只有可散列的数据才能作为映射里的键; 2、如果一个对象是可散列的,那么在这个对象的生命周期中,它的散列值是不变的。并且这个对象需要实现__hash__方法, 包含__qe__方法。原子不可变数据类型(str,bytes和
阅读全文
摘要:1、序列类型包括两类,容器序列和扁平序列 (1)容器序列:list、tuple 和 collections.deque 这些序列能存放不同类型的数据 (2)扁平序列:str、bytes、bytearray、memoryview 和 array.array,这类序列只能容纳一种类型。2、也可分为可变类
阅读全文
摘要:1、通过实现特殊方法,自定义类型可以表现的跟内置类型一样; 如下代码,实现len, getitem,可使自定义类型表现得如同列表一样。 2、repr和str (1) __repr__所返回的字符串应该准确(%r),无歧义,并且尽可能表达出如何用代码创建出这个被创建的对象,如repr(v);输出Vec
阅读全文