自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 python metaclass的理解

python metaclass的理解 1.type,获得变量类型 type(object) -> the object’s type>>> a = 2>>> type(a)<type 'int'>>>> type(type(a))<type 'type'>>>>>>> class MM(object):... def __init__(self):... sel

2017-02-14 10:43:26 698

原创 python笔试题

1.列表(list)和元组(tuple)的区别列表是可以修改的元组不能修改定义:list: 链表, 有序的项目, 通过索引进行查找, 使用方括号"[]";tuple:元组, 元组将多样的对象集合到一起, 不能修改, 通过索引进行查找, 使用括号"()";dict:字典, 字典是一组键(key)和值(value)的组合, 通过键(key)进行查找, 没有顺序, 使用大括号"{}";set:集

2017-02-09 16:34:26 12379

转载 Python 面试题 https://github.com/taizilongxu/interview_python

转载http://python.jobbole.com/85231/

2017-02-07 16:48:19 3151

原创 python 9-5 如何在类中定义装饰器,在包裹函数中就可以持有实例对象,便于修改属性和功能

9-5 如何在类中定义装饰器 解决方案: 为了让装饰器在使用上更加灵活,可以把类的实例方法作为装饰器 此时在包裹函数中就可以持有实例对象,便于修改属性和功能 import loggingfrom time import localtime,time,strftime,sleepclass CallingInfo(object): def __init__(self,name):

2017-01-30 08:40:06 1064

原创 python 9-4 如何实现属性可修改的函数装饰器,python3 nolocal或者在python2中列表方式

python 9-4 如何实现属性可修改的函数装饰器,python3 nolocal或者在python2中列表方式,这样就不会在函数本地新建一个局部变量

2017-01-30 08:37:35 787

原创 python 9-3 如何定义带参数的装饰器,提取函数签名python3 inspect.signature()

9-3 如何定义带参数的装饰器提取函数签名python3 inspect.signature() 带参数的装饰器,也就是根据参数定制化一个装饰器可以看生成器的工厂 每次调用typeassert,返回一个特定的装饰器,然后用它去装饰其他函数from inspect import signaturedef f(a,b,c=1):passsig = signature(f)sig.paramete

2017-01-29 10:57:47 7570

原创 python 9-2 如何为被装饰的函数保存元数据,使用标准库functools中的装饰器wraps 装饰内部包裹函数

9-2 如何为被装饰的函数保存元数据解决方案: 使用标准库functools中的装饰器wraps 装饰内部包裹函数,可以 制定将原函数的某些属性,更新到包裹函数的上面 其实也可以通过 wrapper.name = func.name update_wrapper(wrapper, func, (‘name‘,’doc‘), (‘dict‘,))f.name 函数的名字 f.doc 函数文

2017-01-29 10:54:01 466

原创 python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数

python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数def memo(func): cache = {} def wrapper(*args): if args not in cache: cache[args] = func(*args) return cache[arg

2017-01-29 09:20:51 603

原创 python 8-6 如何使用多进程,使用标准库中的multiprocessing.Process,它可以启动子进程执行任务

8-6 如何使用多进程 解决方案: 使用标准库中的multiprocessing.Process,它可以启动子进程执行任务 操作接口,进程间通信,进程间同步都与threading.Thread类似由于GIL 锁的存在,对于CPU 密集型的任务,python多线程发挥不出多cpu的优势使用多进程,系统确实会生成两个进程,并且两个进程分别会去占用两个CPU,真正意义上实现多线程调度from mult

2017-01-28 17:41:19 720

原创 python 8-5 如何使用线程池 线程池是指分配固定个数的线程,concurrentfutues下的ThreadPoolExecutor

8-5 如何使用线程池解决方案: 线程池是指分配固定个数的线程线程池 python3 标准库中concurrentfutues下的ThreadPoolExecutor 对象的submit 和 map方法可以用来启动线程池中线程执行任务executor = ThreadPoolExecutor(3) def f(a,b): print(‘f’,a,b) return a

2017-01-28 17:38:45 3822

原创 python 8-4 如何使用线程本地数据,threading.local函数可以创建线程本地数据空间,属性对每个线程独立存在

8-4 如何使用线程本地数据解决方案: threading.local函数可以创建线程本地数据空间,其下属性对每个线程独立存在,比如如下例子,l.x是主线程的local 变量 在线程 t 中调用红f 去访问就报错了说找不到这个变量了l = threading.local() l.x = 0 import threading l = threading

2017-01-28 17:32:50 893

原创 python 8-3 如何在线程间进行事件通知

python 8-3-1 使用tarfile可以实现文件的压缩打包解决方案: 线程间的事件通知,可以使用标准库中的Threading.Event,如果是两个线程一般会用到2组eVent来相互通知 1.等待事件一端调用wait,等待事件 event.wait(),如果要wait持续生效 得event.clear() 2.通知事件一端调用set,通知事件 event.set() 3.daem

2017-01-28 17:30:43 1752

原创 python 8-3-1 使用tarfile可以实现文件的压缩打包

python 8-3-1 使用tarfile可以实现文件的压缩打包将当前目录下所有的以xml结尾的文件压缩打包import tarfileimport osdef tarXml(tfname): tf = tarfile.open(tfname,"w:gz") for fname in os.listdir('.'): if fname.endswith('.x

2017-01-28 17:28:38 374

原创 python 8-3-1 使用tarfile可以实现文件的压缩打包

python 8-3-1 使用tarfile可以实现文件的压缩打包将当前目录下所有的以xml结尾的文件压缩打包import tarfileimport osdef tarXml(tfname): tf = tarfile.open(tfname,"w:gz") for fname in os.listdir('.'): if fname.endswith('.x

2017-01-28 17:27:55 1145

原创 python 8-2 如何线程间通信,使用标准库中Queue.queue,它是一个线程安全的队列

python 8-2 如何线程间通信,使用标准库中Queue.queue,它是一个线程安全的队列 解决方案: 使用标准库中Queue.queue,它是一个线程安全的队列 Download线程把下载数据放入队列,Convert线程从队列里提取数据from xml.etree.ElementTree import Element,ElementTreefrom xml.dom.minidom i

2017-01-28 17:22:53 1658

原创 python 8-1 如何使用多线程,Thread创建线程,执行函数赋值给target//类+函数放在run方法中执行

python 8-1 如何使用多线程使用标准库中的threading.Thread创建线程, 在每一个线程中下载并转换一只股票数据首先python受限于GIL的缘故,多线程只适合IO包括网络IO,磁盘IO,密集型的任务,不适合计算密集型的任务实现多线程一般有两种方式第一种:直接将需要执行逻辑部分的函数赋值给target t = Thread(target=handle,args=(1,)) t.

2017-01-28 17:20:32 2175

原创 python 7-8 如何通过实例方法名字的字符串调用方法/使用getattr/标库operator下的methodcaller函数

python 7-8 如何通过实例方法名字的字符串调用方法/使用内置函数getattr/标库operator下的methodcaller函数方法1.使用内置函数getattr,通过名字在实例上获取方法对象,然后调用def getArea(shape): for name in (‘area’,’getArea’,’get_area’): f = getattr(shape

2017-01-28 16:53:09 2847

原创 python 7-7 如何在环状数据结构中管理内存,标准库中的weakref,创建一种能访问对象但不能增加引用计数的对象

python 7-7 如何在环状数据结构中管理内存,使用标准库中的weakref,创建一种能访问对象但不能增加引用计数的对象解决方案: 使用标准库中的weakref,它可以创建一种能访问对象但不能增加引用计数的对象 wref=weakref.ref(owner) ==>当所有引用owner的对象都被delete了,wref就不会指向真实的对象了a_wref = weakref.ref(a)

2017-01-28 16:45:52 481

原创 python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查

python 7-6 如何使用描述符对实例属性做类型检查解决方案使用描述符来实现需要类型检查的属性: 分别实现get,set,__delete方法 在set内使用isinstance函数做类型检查由于python是弱类型语言,变量可以指向任意的对象,我们可以给变量加上类型限制class Attr(object): def __init__(self,name,type_):

2017-01-28 16:40:07 491

原创 python 7-5 如何让类支持比较操作lt/le/total_ordering可以简化此过程,实现lt eq 后,可以推测出<= >=方法

python 7-5 如何让类支持比较操作解决方案 第一种方案实现如下方案 比较符号运算符重载,要实现以下方法 lt le gt ge eq ne第二种方案 使用标准库中的functools下的类装饰器total_ordering可以简化此过程, 实现lt eq 后,total_ordering可以推测出<= >=方法 def lt(self,rect):

2017-01-28 16:35:42 2502

原创 python 7-4 如何创建可管理的对象属性R = property(getRadius,setRadius)或者@property @radius.setter

python 7-4 如何创建可管理的对象属性R = property(getRadius,setRadius)或者@property @radius.setter解决方案: 1. 使用property函数为类创建可管理属性,fget/fset/fdel对应的属性访问 R = property(getRadius,setRadius)c2=Circle(1.0) c2.R=2.0

2017-01-28 16:26:28 1094

原创 7-3 如何让对象支持上下文管理协议,需要定义__enter__, __exit__方法 分别在with开始和结束时候被调用

7-3 如何让对象支持上下文管理 解决方案: 实现上下文管理协议,需要定义enter, exit方法 他们分别在with开始和结束时候被调用with TelnetClient2('127.0.0.1') as client: client.start() 对象client是来自于__enter__函数的返回最后退出的时候不管是否存在异常,都将会进入到__exit__处理wi

2017-01-28 16:20:20 610

原创 7-2 如何为创建大量实例节省内存定义类的__slots__属性,它是用来声明实例属性名,sys.getsizeof字的列表

7-2 如何为创建大量实例节省内存解决方案: 定义类的slots属性,它是用来声明实例属性名字的列表 有了slots之后对象就不可以再新添加属性 p1.xdictimport sysclass Player(object): def __init__(self,uid,name,status=0,level=1): self.uid = uid self

2017-01-28 16:16:37 347

原创 python 7-1 如何派生内置不可变类型(int,str,tuple,float)并修改实例化行为,继承内置tuple并实现__new__

7-1 如何派生内置不可变类型(int,str,tuple,float)并修改实例化行为解决方案: 定义类IntTuple继承内置tuple,并实现new,修改实例化行为比如我们需要做一个定制化的浮点数,只取小数点后面2位class MyFloat(float): def __init__(self,floatDigit): super(MyFloat,self).__i

2017-01-28 11:45:04 3181

原创 python 6-5 如何读写excel文件 使用第三方库xlrd 和 xlwt,这两个库分别用于excel读和写

6-5 如何读写excel文件解决方案 使用第三方库xlrd 和 xlwt,这两个库分别用于excel读和写安装第三方包pip install xlrd xlwt读写excel文件import xlrdimport xlwtbook=xlrd.open_workbook('demo.xlsx')book.sheets()sheet=book.sheet_by_index(0)print

2017-01-27 10:52:40 810

原创 python 6-4 如何构建xml文档使用标准库中的xml.etree.ElementTree 构建ElementTree,使用write方法写入文档

python 6-4 如何构建xml文档使用标准库中的xml.etree.ElementTree 构建ElementTree,使用write方法写入文档 root=minidom.Document()”’6-4 如何构建xml文档 使用标准库中的xml.etree.ElementTree 构建ElementTree,使用write方法写入文档”’from xml.dom.minidom imp

2017-01-27 10:47:52 5764

原创 python 6-3 如何解析简单的xml文档 使用标准库中的xml.etree.ElementTree,其中parse函数可以解析xml文档

6-3 如何解析简单的xml文档 使用标准库中的xml.etree.ElementTree,其中parse函数可以解析xml文档https://docs.python.org/2.7/library/xml.etree.elementtree.html?highlight=etree#module-xml.etree.ElementTreeroot.find(‘tagname’) root.f

2017-01-27 09:32:06 7244

原创 python 6-2 如何读写json数据

python 6-2 如何读写json数据 3-2 中有提到使用request去获得天气预报 解决方案 使用标准库中的json模块,其中loads,dumps函数可以完成json数据的读写json.dumps()将一个python对象转换成为json字符串 print json.dumps(l,separators=[‘,’,’:’]) 可以将多余的空格去掉 json.dumps(d,so

2017-01-26 11:51:56 890

原创 python 6-1 如何读写csv数据reader=csv.reader(rf)/writer=csv.writer(wf)

python 6-1 如何读写csv数据reader=csv.reader(rf)/writer=csv.writer(wf)解决方案: 使用标准库中的csv模块,可以使用其中reader和writer 完成对csv文件的读写http://table.finance.yahoo.com/table.csv?s=000001.szcsv 模块csv读rf=open("xx.csv",'rb')re

2017-01-26 11:35:33 2938

原创 python 5-6 tempfile下的TemporaryFile 和 NamedTemporaryFile

python 5-6 tempfile下的TemporaryFile 和 NamedTemporaryFile解决方案 使用标准库中的tempfile下的TemporaryFile 和 NamedTemporaryFile TemporaryFile 这个在文件系统中找不到文件的 NamedTemporaryFile 这个在文件系统中可以找到文件,前提是需要加上(delete=Fals

2017-01-26 11:05:37 6278

原创 python 5-5 如何访问文件的状态os.stat()/os.path

5-5 如何访问文件的状态 1.文件的类型(普通文件 ,目录 符号链接,设备文件 2.文件的访问权限 3.文件爱你最后访问/修改/节点状态更改时间 4.普通文件的大小解决方案 系统调用 表中库os模块中的三个系统调用 stat fstat lstat获取文件状态 如果是符号链接文件 stat之后渠到的是指向的文件属性 , lstat才是获取到符号链接文件的属性 fstat需要的文件描

2017-01-26 10:55:44 1403

原创 python 5-4 如何将文件映射到内存mmap.mmap(f.fileno(),0,access=mmap.ACCESS_WRITE)

python 5-4 如何将文件映射到内存解决方案使用标准库中mmap模块的mmap函数,它需要一个打开文件描述符作为参数 Unix: mmap(fileno, length[, flags[, prot[, access[, offset]]]])#文件描述符获取方法 1.os.open() 2.f=open("test.txt",20) f.fileno ==>获得文件描述符使用dd

2017-01-26 09:14:40 2182

原创 python 5-3 如何设置文件的全缓冲(硬盘 缓冲大小满了,就落盘),行缓冲(tty),无缓冲(串口)

python 5-3 如何设置文件的全缓冲(硬盘 缓冲大小满了,就落盘),行缓冲(tty),无缓冲(串口)在日常工作中,经常都会碰到文件的操作,说到文件提到最多的是缓存,所谓缓存是指linux OS从磁盘中读到文件后系统会把读到的内容暂存起来,或者linux OS 写入操作时候,会等到内容达到一定长度时候才会写入磁盘文件缓冲 分为全缓冲(硬盘 缓冲大小满了,就落盘),行缓冲(tty),无缓冲(串

2017-01-26 08:48:25 1287

原创 python 5-2 如何处理二进制文件open("test.wav","rb")/struct.pack/unpack/array('h',(0 for _ in xrange(n)))

python 5-2 如何处理二进制文件open(“test.wav”,”rb”)/struct.pack/unpack/array(‘h’,(0 for _ in xrange(n)))解决方案:open函数以二进制模式打开,指定mode 参数为 'b'二进制数据可以通过readinto,读入到提前分配好的buffer中,便于数据处理,buffer=array.array('i',(0 f

2017-01-25 11:15:43 1346

原创 python 5-2-2 如何使用array.array('h',(0 for _ in xrange(n)))/buf.tofile(f2)

python 5-2-2 如何使用array.array(‘h’,(0 for _ in xrange(n)))/buf.tofile(f2)import arrayf = open(“d:\demo.wav”,”rb”) ==>通过二进制打开文件 info = f.read(44) ==>读取文件前44个字节 f.seek(0,2) ==>将文件指针直到文件末尾 n = (f.tel

2017-01-25 09:46:18 1779

原创 python 5-2-1 struct打包struct.pack/解包struct.unpack()

struct 打包/解包>>> i = 1024 将整数打包成16进制>>> >>> >>> >>> struct.pack("<i",i)'\x00\x04\x00\x00'>>> struct.unpack("<i",'\x00\x04\x00\x00') 将16进制解包成为整数(1024,)help(struct)>>> help(struct)Help on module

2017-01-23 16:29:17 2354

原创 python 5-1 如何读写文本文件str1.encode('utf8')/decode('utf8')/open("text2.txt","wt",encoding="utf8")

python 5-1 如何读写文本文件 python2.x 写入文件前对unicode编码,读入文件后对二进制字符串编码python3.x open函数指定’t’的文本模式,encoding指定编码格式python2.x 写入文件前对unicode编码,读入文件后对二进制字符串编码默认是通过unicode编码写进文件,通过unicode解码读出文件可以 可以通过str1.encode(“utf8

2017-01-23 14:23:52 3738

原创 python 4-6 如何去掉字符串中不需要的字符strip('-+*')/lstrip()/rstrip()/切片分段+/replace/sub/translate

4-6 如何去掉字符串中不需要的字符方法一,字符串strip() lstrip() rstrip() 去掉字符串两端字符 方法二,删除单个位置的字符,可以使用切片 + 拼接的方式 方法三,字符串的replace()方法或者正则表达式re.sub删除任意位置字符 方法四,字符串translate方法,可以同时删除多种不同的字符方法一,字符串strip() lstrip() rstrip() 去

2017-01-22 18:36:02 8789

原创 python 4-5 如何对字符串进行左, 右, 居中对齐str.ljust/rjust/center/format(s,'<20'/'>20'/'^20')

python 4-5 如何对字符串进行左, 右, 居中对齐str.ljust/rjust/center/format(s,’<20’/’>20’/’^20’) 解决方案: 使用字符串的str.ljust() str.rjust() str.center() 使用format() 传递类似’<20’,’>20’,’^20’参数完成任务使用字符串的str.ljust() str.rjust() s

2017-01-22 15:22:46 13667

原创 python 4-4 如何将多个小字符串拼接成一个大的字符串字符串(+)/S.join()

python 4-4 如何将多个小字符串拼接成一个大的字符串字符串(+)/join()解决方案: 通过连续使用 + 来实现 是通过调用运算符重载实现的 通过str.join 来实现+ 通过运算符重载a = "hello"b = "wolrd"c = a + bprint c'helloworld's = ''lista = [ "hello","world",123,456,"xyz

2017-01-22 13:49:43 6674

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除