摘要:1.生成器 生成器是一个对象,每次调用它的时候,都会调用next()方法返回一个值,直到抛出StopIteration异常; 一般生成器对象由两种:一种是对象本省就是生成器,另外一种即使包含yield语句的函数,可以简单理解为生成器;yield语句有两层含义:和return一样返回一个值,同时会记录
阅读全文
摘要:1.抽象方法的概念 之前我们定义一个基类的时候,如果要求子类必须重写父类中的某一个方法,可以这样做: 定义一个名为Pizza的基类,让其get_radius方法必须被子类继承 如果子类没有重写该方法就会触发错误 但是上述方法的缺点是:如果只实例化了子类,而没有调用方法,NotImplementedE
阅读全文
摘要:1.python装饰器的缺点 装饰器可以允许我们在不改变函数或犯方法的调用方式的情况下,添加额外的功能; 如下所示,我们要在中的方法之前增加装饰器check_is_admin,用来判断执行类的方法的用户是否为admin用户; 但是,经过装饰器修饰的函数,其func_name和func_doc的属性都
阅读全文
摘要:参考链接:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820023084e5263fe54fde4e4e8616597058cc4ba1000 在python2.7到
阅读全文
摘要:类似于crontab的功能,可以实现定时定点执行任务; 将已经生成的任务放入队列中,获取到了执行可以实现任务调度功能; 如果将需求复杂化,加上优先级策略,并能取消已经加入队列中的任务,就需要使用python的标准库模块sched了; 未完待续。。。
阅读全文
摘要:经常我们会编写自定义模块,用于被别的脚本调用;有时候为了方便,会使用from module_name import *的方式导入,这样会把模块中全部对象导入进来; 使用__all__结合列表,可以控制使用上述方式的时候,之后哪些对象可以被导入和引用; 限制只有name,gender和test可以被导
阅读全文
摘要:目前已经知道,在需要并发执行任务的时候,需要使用多线程或者多进程;如果是IO密集型任务,使用多线程,如果是CPU密集型任务,使用多进程;但问题是,经常我们会遇到一种情况就是:需要被执行的任务既有IO操作,又有计算操作,那么这种情况下,已经无法 直观的判断任务是IO操作的多还是计算操作的多了; 所以,
阅读全文
摘要:1.给实例化的对象添加新的属性 看下面一段代码,然后给实例化的对象s添加或者修改属性 可以看到:实例的属性可以被修改或者添加 2、使用__slots__限制只有指定的属性才可以被实例添加 将可以被实例化的对象修改的属性添加到内置函数__slots__后面的元祖中,表示只有当属性存在于该元祖中时,该属
阅读全文
摘要:1.上下文管理的原理 在python2.6以后,当我们操作文件的时候,可以不再使用open打开文件,操作完成之后再close掉文件句柄来实现对文件的操作,而是可以使用with ... as f的方式,无需关闭文件句柄,而是由程序在操作完成之后自动执行close操作;这种在程序开始时执行准备工作,程序
阅读全文
摘要:按照python中"一切皆对象的原理",所有创建的对象,都是一个已知存在的class实例化的结果;那么class又是被哪个"类"实例化的呢?先看下面的一段代码 可以看到:obj是由Foo实例化,而Foo由type类创建 这样Foo就可以这样实现了,看下面: 那么问题随之产生了,既然class是由ty
阅读全文
摘要:首先看一段代码: 这里我们定义了一个类Foo,类成员函数有双下划线方法__private_method和单下滑线方法_halfprivate_method,调用public_method和_halfprivate_method结果如下: 显示没有问题。调用__private_method结果如下:
阅读全文
摘要:select、poll和epoll的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。 se
阅读全文
摘要:一、Django概述 Django大而全; 创建Django工程:django-admin startproject sitename 创建django之后生成的目录结构如下: Project Project settings url wsgi web model views test admin
阅读全文
摘要:一、JSON序列化 1、为什么要使用JSON:不同程序之间或不同语言之间内存数据的交互 在不同程序语言或程序之间交互数据的时候,数据的格式只有字符串格式的才可能被对端程序识别,而事实上,在数据交互的时候,大多数数据的数据类型是很复杂的,比如python的字典,而字典格式的数据是不能被别的程序语言识别
阅读全文
摘要:global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults log global mode http timeout connect 5000ms timeout client 50000ms t
阅读全文