这章讨论上下文管理器问题以及一些控制结构中附加的else语句事项。 与其它常见语言不同,Python设计了一个特殊的else控制流程。除了标准的if/else之外,它给for/while/try控制块都增加了else控制流程。它的执行行为是…
流畅的Python-Fluent Python读书笔记-14-可迭代的对象、迭代器和生成器
这章内容开始转向控制流程,探讨可迭代的对象、迭代器和生成器。 迭代器、生成器是近些年程序语言中比较流行的概念。它可以看成一类问题的抽象。C++的STL中,就有迭代器理念。Java中也有迭代器。日益兴旺的JavaScript在ES6版本中,也…
一本好书有多少价值?
价值可以远远超过图书本身。 阅读一本高质量的经典图书,不仅收获这本书的知识,还经常能得到这本书提到的各种优秀的书目作为扩展。而这些扩展阅读本身又常常会带来其它的延伸,让你能触类旁通,知识融为一体。 比如书籍1里面提到2、3,书籍2里…
流畅的Python-Fluent Python读书笔记-13-正确重载操作符
这章讲的是运算符重载。运算符重载不是什么新玩意儿,老早就有。但是在C++时代,名声不佳,因为滥用的情况比较多,而且语法也不怎么方便。所谓运算符重载,就是你定义操作符和它的运算规则,适度使用,可以有效的提升代码可读性。 比如,字符串相加:st…
流畅的Python-Fluent Python读书笔记-12-继承的优缺点
这章探讨继承和子类化问题。 首先,不要子类化内置的类型。因为内置类型有自己的操作规则,子类化内置类型,修改已有方法,很容易破坏正常的操作逻辑。这是个坑。 Python少见的支持了多重继承。其它常见语言只有C++支持多重继承,别的语言都选择了…
流畅的Python-Fluent Python读书笔记-11-接口:从协议到抽象基类
这章讨论“接口”问题。折腾面向对象那些年,接口被大书特书过。特别是Java。但是Python选择的是完全不同的路线。它选择简洁和实用,并不追求纯粹。 Python更推崇所谓“鸭子类型”的做法:只要你叫的像鸭子,走路像鸭子,那你就是鸭子 …
流畅的Python-Fluent Python读书笔记-10-序列的修改、散列和切片
这章以一个vector类为案例,主要研究如何设计实现序列操作,修改,散列,切片,以及属性的自定义操作。个人觉得这章内容更适合设计类库的开发者。普通应用可能会部分用到里面的技术,比如自定义序列切片操作。所以参考下,知道个大概即可,真正用到的时…
流畅的Python-Fluent Python读书笔记-09-符合Python风格的对象
这章延续第1章内容,探讨如何实现很多Python类型中常见的特殊方法。这些特殊方法我觉得可以看成一种特别的“钩子”。Python内部设计的远比PHP/JavaScript语言严谨、精巧、精细,它定义了对象的各种各样的运算方式,这些方式在内部…
流畅的Python-Fluent Python读书笔记-08-对象引用、可变性和垃圾回收
这章开始讨论Python面向对象的话题。 Python这种动态语言,变量本身是谈不上“类型”的,因为它可以随时指向另外的内容。本章一开头就提到这点,不能把变量看成“盒子”,而要看成“标签”。它跟静态语言正好是反的。另外,Python语言支持…
流畅的Python-Fluent Python读书笔记-07-函数装饰器和闭包
这章讲的是函数装饰器和闭包。函数装饰器在Python框架、类库中大量使用,不懂这个是看不懂也无法理解它们的。闭包其实是存在了很久的概念,只是在函数式编程逐渐兴起之后,开始被广大程序猿群众熟知。特别是在JavaScript里面,到处都是闭包。…