从 Python 3.4 起,标准库中有两个名为 Future 的类:concurrent.futures.Future 和asyncio.Future.这两个类的作用相同:两个 Future 类的实例都表示可能已经完成或者尚未完成的延迟计算 我们要记住一件事:通常情况下自己不应该创建期物,而只能由并发框架(concurrent.futures 或 asyncio)实例化.原因很简单:期物表示终将发生的事情,而确定某件事会发生的唯一方式是执行的时间已经排定.因此,只有排定把某件事交给 concu…
本章讨论的话题 python如何计算装饰器句法 python如何判断变量是不是局部的(通过函数内部是否给变量赋值过来判断是否是局部变量) 闭包存在的原因和工作原理(闭包是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定.函数中的函数) nonlocal能解决什么问题(nonlocal是新出现的保留关键字,python3.0中引入)(将局部变量声明为自由变量) 探讨 实现行为良好的装饰器 标准库中有用的装饰器 实现一个参数化的装饰器 装…
字符问题 把码位转化成字节序列的过程是编码,把字节序列转化成码位的过程是解码 把unicode字符串当成人类可读的文本,码位当成机器可读的, 将字节序列编程人类可读是解码,把字符串编码成字节序列是编码 字节概要 python内置了两种基本的二进制序列类型,python3引入的不可变的bytes类型和python2.6添加的可变bytearray类型 基本的编解码器 别依赖默认值 python2的默认编码是ascii而python3是utf-8 这章内容主要讨论unicode编码,其实觉得没什么很…
鸭子协议(忽略对象真正类型,转而关注对象有没有实现所需的方法,签名和语义) 标准库中的抽象基类 collections.abc模块中的抽象基类 抽象方法是抽象基类中用来强制子类必须实现的方法,如果子类不实现该方法,则会报错 上述例子中的load,pick属于抽象方法,Tombola的子类必须实现这两个方法,否则报错 实际上,抽象基类的定义需要对python有深入的了解,一般来说只需要能够理解看懂源码即可. 抽象基类的句法详解…
在python中,函数是一等对象,一等对象是满足以下条件的程序实体 1在运行时创建 2能复制给变量或数据结构的元素 3能作为参数传给函数 4能作为函数的返回结果 高阶函数(接受函数作为参数或者把函数作为结果返回的函数),如map和sorted函数 最为人熟知的高阶函数有map,filter,reduce和apply,apply在python3中移除了 map,filter和reduce的替代品 map和filter现在可以使用列表推导来替代 reduce在python2是内置函数,python3…
抨击线程的往往是系统程序员,他们考虑的使用场景对一般的应用程序员来说,也许一生都不会遇到--应用程序员遇到的使用场景,99% 的情况下只需知道如何派生一堆独立的线程,然后用队列收集结果. 示例:网络下载的三种风格 为了高效处理网络 I/O,需要使用并发,因为网络有很高的延迟,所以为了不浪费 CPU 周期去等待,最好在收到网络响应之前做些其他的事. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } 为了通过代码说明这一…
运算符重载基础 不能重载内置类型的运算符 不能新建运算符,只能重载现有的 某些运算符不能重载-------is,and,or和not(不过位运算符&,|和~可以) 一元运算符…
什么是可散列的数据类型 如果一个对象是可散列的,那么在这个对象的生命周期中,他的散列值是不变的,而且这个对象需要实现__hash__()方法.另外可散列对象还要有__qe__()方法.这样才能跟其他键做比较.如果两个可散列对象是相等的.那么他们的散列值一定是一样的. 原子不可变数据类型(str, bytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根据其定义.frozenset里只能容纳可散列类型.元组的话.只有当一个元组包含的所有元素都是可散列类型的情况下,他才是可散列的…
作者:熊猫烧香 链接:www.pythonheidong.com/blog/article/26/ 来源:python黑洞网 目标读者 本书的目标读者是那些正在使用 Python,又想熟悉 Python 3 的程序员.如果你懂 Python 2,但是想迁移到 Python 3.4 或者更新的版本,也没问题.在写这本书的时候,大多数专业 Python 程序员用的还是 Python 2,因此如果书中出现来自 Python 3 的特性,读者可能会感到陌生,我也会特别地做出解释.然而,本书的主要目的是为…
流畅的python 第1章 python数据模型 ---1.1 一摞Python风格的纸牌 特殊方法,即__method__,又被称为魔术方法(magic method)或者双下方法(dunder-method). 特殊方法的存在是为了被python解释器调用的 collections.namedtuple用于构建一个只有少数属性但是没有方法的对象 通过实现__getitem__,可以使对象有[]操作,支持切片操作,可迭代 for i in x:实际上是用了iter(x),而这个函数背后则是x.…