__getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克牌的例子来看下 class FrenchDeck:     ranks=[str(n) for n in range(2,11)] + list('JQKA')     suits='spades diamonds clubs hearts'.split()     def __init__(sel…
第十七章:并发处理 本章主要讨论Python3引入的concurrent.futures模块.在python2.7中需要用pip install futures来安装.concurrent.futures 是python3新增加的一个库,用于并发处理,提供了多线程和多进程的并发功能 类似于其他语言里的线程池(也有一个进程池),他属于上层的封装,对于用户来说,不用在考虑那么多东西了. 使用方法: 1 Executor:两个子类ThreadPoolExecutor和ProcessPoolExecut…
在python开发项目或者做自动化测试时候,在测试完成后需要将测试结果总结后进行上报,那么我们就可以通过发送邮件来完成这项工作. 下面我们来看看python中怎么发送邮件的,python中发送邮件可以使用smtplib模块或者yagmail模块,其实yagmail模块里面已经封装了smtplib模块,所以下面我们直接学习下yagmail模块发送邮件.模块可在我的网盘下载:https://pan.baidu.com/s/1hvS78sv6-XOwBLXLOIa5GQ,下载之后pip install…
本章讨论python3.2引入的concurrent.futures模块.future是中文名叫期物.期物是一种对象,表示异步执行的操作 在很多任务中,特别是处理网络I/O.需要使用并发,因为网络有很高的延迟.所以为了不浪费CPU周期去等待,最好在收到网络响应之前做些其他的事. 首先来看下并发和非并发的两个脚本,来对比下各自的运行效率.在这个程序中,我们通过脚本去网站下载各个国家的国旗.网址是http://flupy.org/data/flags/cn/cn.gif 这里http://flupy…
目录: 一.路由系统URL 1.Django请求生命周期 2.创建Django project 3.配置 4.编写程序 二.视图 三.模板 四.ORM操作 内容: 一.URL 1.Django请求生命周期 URL对应关系(匹配)-> 视图函数 -> 返回用户字符串   URL对应关系(匹配)    -> 视图函数 -> 打开一个HTML文件,读取内容 2.创建Django project django-admin  startproject myproject cd  myproj…
在这一章中,将使用asyncio写一个TCP服务器.这个服务器的作用是通过规范名称查找Unicode字符,来看下代码: import asyncio from charfinder import UnicodeNameIndex CRLF=b'\r\n' PROMPT=b'?>' index=UnicodeNameIndex() @asyncio.coroutine def handle_queries(reader,writer): while True: writer.write(PROMP…
首先是线程与协程的对比.在文中作者通过一个实例分别采用线程实现和asynchio包实现来比较两者的差别.在多线程的样例中,会用到join的方法,下面来介绍下join方法的使用. 知识点一:当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在python中,默认情况下(其实就是setDaemon(False)),主线程执行完自己的任务以后,就退出了,此时子线程会继续执行自己的任务,直到自己的任务结束,例子如下:. def run():…
前面介绍了asyncio的用法.下面我们来看下如何用协程的方式来实现之前的旋转指针的方法 @asyncio.coroutine def spin(msg): write,flush=sys.stdout.write,sys.stdout.flush for char in itertools.cycle('|/-\\'): status=char+''+msg write(status) flush() write('\x08'*len(status)) try: yield from asyn…
一.面向对象编程 面向对象,是一种程序设计思想. 编程范式:编程范式就是你按照什么方式去编程,去实现一个功能.不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程. 面向过程:什么是面向过程,面向过程的思想就是把一个项目,一件事情按照一定的顺序,从头到尾一步一步的做下去,先做什么,后做什么,一直到结束.这种编程思想,只要前面一个步骤变了,那么后面的就也要变,后面维护一起比较麻烦,这样的编程思想,我们在写一些简单的小程序,只执行一…
Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 1. 什么是序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中…