序列修改,散列和切片 基本序列协议:Basic sequence protocol: __len__ and __getitem__ 本章通过代码讨论一个概念: 把protocol当成一个正式接口.协议概念和鸭子类型的关系.当创建自定义类型时,它的实际影响. Vector类,一个自定义的序列类型 我们的实现Vector的策略是使用composition(组合),而不是继承. 10.3 序列和鸭子类型 协议是非正式的接口,只在文档内定义,在代码中不定义. 例如,序列协议在Python只需要__le…
<流畅的Python>这本书是图灵科技翻译出版的一本书,作者Luciano Ramalho. 作者从Python的特性角度出发,以Python的数据模型和特殊方法为主线,主要介绍了python的集合类型(sequence.mapping.set等).把函数作为一等对象来使用.类的构建.新的文件控制流程(生成器.上下文管理器.协程).用描述符来从底层解释Python对象属性的存储等各个方面. 书中主要围绕Python标准库展开,不会涉及太多的标准库以外的包.虽然它们也很实用. 建议大家可以把前言…
流畅的python 第1章 python数据模型 ---1.1 一摞Python风格的纸牌 特殊方法,即__method__,又被称为魔术方法(magic method)或者双下方法(dunder-method). 特殊方法的存在是为了被python解释器调用的 collections.namedtuple用于构建一个只有少数属性但是没有方法的对象 通过实现__getitem__,可以使对象有[]操作,支持切片操作,可迭代 for i in x:实际上是用了iter(x),而这个函数背后则是x.…
流畅的python中有很多奇技淫巧,整本书都在强调如何最大限度地利用Python 标准库.介绍了很多python的不常用的数据类型.操作.库等,对于入门python后想要提升对python的认识应该有帮助.目前读一遍记录了一些有共鸣的操作: Python内置序列类型的主要分类: 按可存放的元素类型分为:容器序列和扁平序列 1. 容器序列,就是什么都能作为元素往里放,包括另一个序列.需要注意的是,如果元素是序列类型,那么存放的往往是引用,需要小心. 常见的容器序列包括:list,tuple,arr…
对象引用.可变性和垃圾回收 变量不是盒子 人们经常使用“变量是盒子”这样的比喻,但是这有碍于理解面向对象语言中的引用式变量.Python 变量类似于 Java 中的引用式变量,因此最好把它们理解为附加在对象上的标注. 在示例 8-1 所示的交互式控制台中,无法使用“变量是盒子”做解释.图8-1 说明了在 Python 中为什么不能使用盒子比喻,而便利贴则指出了变量的正确工作方式. 示例 8-1 变量 a 和 b 引用同一个列表,而不是那个列表的副本 >>> a = [1, 2, 3] &…
1.现在在看<流畅的Python>这本书,看了三页就发现,这本书果然不是让新手来入门的,一些很常见的知识点能被这个作者玩出花来, 唉,我就在想,下面要分析的这些的代码,就算我费劲巴拉的看懂了,又有什么用呢,我其实不想靠着技术吃饭,但是现在在这个岗位上, 就得在其位谋其职,悲哀.我在敲代码方面也没什么天赋,也没什么热情,老话说得好,‘女怕嫁错郎,男怕入错行’, 所以我得从IT行业抽出身来.anyway,进入正题. 2.python解释器碰到特殊的句法时,会使用特殊方法去激活一些基本的对象操作,这…
Object References, Mutability, and Recycling 本章章节: Variables Are Not Boxes identity , Equality ,  Aliases Copies are shallow by default Function Parameters as references del and Garbage Collection Weak References Tricks Python Plays with Immutable Va…
流畅的Python 致Marta,用我全心全意的爱 第一部分 序幕 第一章 Python数据模型 特殊方法 定义: Python解释器碰到特殊句法时,使用特殊方法激活对象的基本操作,例如python语句len(x) 调用了x.__ len __的方法.这些特殊方法支持以下的语言构架: 迭代 集合类 属性访问 运算符重载 函数和方法的调用 对象的创建和销毁 字符串表示形式和格式化 管理上下文(with块) 命名规则: __ getitem __ (左右两个双下划线,故称为dunder method…
1. 报错如下: SyntaxError: Non-UTF-8 code starting with '\xd3' in file D:\流畅学python\ex34.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 2. 解决办法: 1> 首行添加 # -*- coding:utf-8 -*- 2> 更改编码格式 File-> Settings->…
第二部分 Data Structure Chapter2 An Array of Sequences Chapter3 Dictionaries and Sets Chapter4 Text versus Bytes An Array of Sequences 本章讨所有的序列包括list,也讨论Python3特有的str和bytes. 也涉及,list, tuples, arrays, queues. 概览内建的序列 分类 Container swquences: 容器类型数据 list, t…