随笔分类 -  流畅的python

协程
摘要:之前都提到了几次协程,那么今天就来具体看看到底什么是协程,为什么要有协程,python如何实现协程的。 通过对生成器的学习,我们知道,yield val这行代码会给调用next(gen)的客户端产出一个值,然后暂停,把执行权限移交到客户端那里,等到下次客户端再次调用next(gen)的时候,再从yi 阅读全文

posted @ 2019-03-11 14:54 forwardFields 阅读(491) 评论(0) 推荐(0)

上下文管理器和else块
摘要:今天的主题是讨论以下特性: * with语句和上下文管理器 * for、while、try语句的else子句 使用with语句会设置一个临时的上下文,交给上下文管理器对象控制,并负责清理上下文。这么做主要是为了避免样子代码,易于使用。除了自动关闭文件外,with还有很多其他用途。 else子句与wi 阅读全文

posted @ 2019-03-08 17:06 forwardFields 阅读(203) 评论(0) 推荐(0)

可迭代的对象、迭代器、生成器
摘要:当我在自己的程序中发现用到了模式,我觉得这就表明某个地方出错了。程序的形式应该仅仅反映它所要解决的问题。代码中其他任何外加的形式都是一个信号,(至少对我来说)表明我对问题的抽象还不够深——这通常意味着自己正在手动完成的事情,本应该通过写代码来让宏的扩展自动实现。 ——Paul Graham Lisp 阅读全文

posted @ 2019-03-07 14:22 forwardFields 阅读(373) 评论(0) 推荐(0)

运算符重载
摘要:以前面我们定义过的Vector向量类为例,讨论重载运算符。 运算符重载基础 运算符重载本质上是函数调用。许多面向对象语言都支持运算符重载,如C++,如果使用得当,API会更好用,代码也会更加易于阅读。python也支持运算符重载,只是增加了一些限制: * 不能重载内置类型的运算符 * 不能新建运算符 阅读全文

posted @ 2019-03-07 14:01 forwardFields 阅读(894) 评论(0) 推荐(0)

继承的优缺点
摘要:今天讨论两个话题 * 子类化内置类型的缺点 * 多重继承和方法解析顺序(__mro__) 许多人都对继承敬而远之。Java不支持多继承,并没有产生什么坏的影响,而C++对多继承的滥用上了很多人的心(笔者也是其中一位)。因此,今天就讨论一下多继承到底是怎么回事。 子类化内置类型很麻烦 直接子类化内置类 阅读全文

posted @ 2019-03-06 18:12 forwardFields 阅读(2191) 评论(0) 推荐(0)

接口:从协议到抽象基类
摘要:抽象类表示接口。 Bjarne StroustrupC++之父 Python中的接口和协议 引入抽象基类之前,python就已经很成功了,即便现在也很少有代码使用抽象基类。协议可以看成是非正式的接口,是python这种动态语言实现动态的方式。 接口在动态语言中是如何运作的呢?首先,python中除了 阅读全文

posted @ 2019-03-06 11:24 forwardFields 阅读(449) 评论(0) 推荐(0)

符合python风格的对象
摘要:python自带的对象拥有很多有趣的行为,用户自己定义的类对象也可以实现跟python对象相同的行为。 对象的表示形式 python关于对象的表示提供了两种形式: repr() 便于开发者理解的返回对象的字符串形式 str() 便于用户理解的返回对象的字符串形式 也正是对象的__repr__和__s 阅读全文

posted @ 2019-03-05 17:33 forwardFields 阅读(325) 评论(0) 推荐(0)

装饰器和闭包(续)
摘要:实现一个简单的装饰器 定义一个装饰器,它在每次被修饰函数被调用时计时、然后把经过的时间、传入的参数、结果打印出来 需要说明的是,被clock修饰的函数,函数指向的都是clock内部的clocked函数。 @clock def func(...): pass 与func = clock(func)是等 阅读全文

posted @ 2019-03-05 13:38 forwardFields 阅读(257) 评论(0) 推荐(0)

装饰器和闭包
摘要:装饰器用来在不修改原函数代码的情况下,增强该函数的功能。要想熟练掌握装饰器,必须理解闭包。 闭包粗略的讲就是保存有状态的函数,它除了在装饰器中有作用之外,还是回调式异步编程和函数式编程的基础。所以闭包的重要性可想而知。 装饰器基础知识 装饰器就本质而言依然是一个函数,他接收一个函数作为参数,然后返回 阅读全文

posted @ 2019-03-05 10:52 forwardFields 阅读(909) 评论(0) 推荐(0)

用函数实现设计模式
摘要:符合模式不代表做得对。 Ralph Johnson《设计模式:可复用面向对象软件的基础》 案例分析:重构策略模式 利用一等对象的函数,能够使得某些设计模式得以简化。策略模式是个很经典的例子,能够用函数重构它来有效的精简代码。 经典的策略模式 摘自《流畅的python》 淘宝、天猫的购物功能就可以使用 阅读全文

posted @ 2019-03-04 17:30 forwardFields 阅读(413) 评论(0) 推荐(0)

一等函数
摘要:在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程序实体:• 在运行时创建• 能赋值给变量或数据结构中的元素• 能作为参数传给函数• 能作为函数的返回结果 把函数视为对象 在python中一切皆对象,那么函数自然也是对象。 明白了函数是对象后,就可以使用函数式风 阅读全文

posted @ 2019-03-01 16:45 forwardFields 阅读(289) 评论(0) 推荐(0)

字符串编码和字节解码
摘要:本人以前就经常搞不清楚utf-8、unicode、字符串、二进制序列、编码、解码这几个之间的关系,趁今天有时间,赶紧写篇文章巩固这几个概念,免得以后又搞混了。 字符串是什么? 字符串就是字符序列,说得更通俗点,一串字符就是字符串。问题在于该如何给字符下定义? 2015年开始,“字符”的最好定义就是U 阅读全文

posted @ 2019-03-01 15:07 forwardFields 阅读(2689) 评论(0) 推荐(0)

字典和集合
摘要:字典dict这种数据结构活跃在所有python程序的背后,即便你的程序没有直接使用它。 字典在python里的作用至关重要,python也对其实现做了高度优化,而背后的散列表则是字典性能出众的根本原因,集合可以看成是只含有键,没有值的特殊的字典。 泛映射类型 你一定听过linux里泛文件抽象的概念吧 阅读全文

posted @ 2019-03-01 11:08 forwardFields 阅读(827) 评论(0) 推荐(0)

Python的序列类型
摘要:Python的序列类型非常丰富,包括了列表(list),元组(tuple),字符串(str), 字节数组(bytes),队列(deque),今天我们就着重了解下python中的这些内置序列类型。 内置序列类型介绍 python标准库中的序列类型使用C语言实现,大体上可分为下面几类。 容器序列 lis 阅读全文

posted @ 2019-02-28 17:29 forwardFields 阅读(15498) 评论(0) 推荐(0)

导航