Python Cookbook
MrUncle德鲁
发现自己并喜欢自己
展开
-
Python Cookbook学习笔记 ch1_02
1.7 字典排序问题:创建一个字典,并且在迭代后者序列化字典时能够 控制元素的顺序方案:可以使用collections模块中的OrderedDict类。在迭代操作时他会保持元素被插入时的顺序from collections import OrderedDictd = OrderedDict()d['foo'] = 1d['bar'] = 2d['spam'] = 3d[...原创 2018-08-26 22:49:00 · 204 阅读 · 0 评论 -
Python Cookbook学习笔记ch5_01
here查看效果更好5.1读写文本数据问题:如何读写各种编码的文本数据方案:使用带有rt或者wt 模式的open()函数with open('data_file/ch5_1.txt','rt') as f: '''读取整个文件为一个字符串''' data = f.read() print(data)I love pyhthonhello worl...原创 2018-09-03 21:22:02 · 188 阅读 · 0 评论 -
Python Cookbook学习笔记ch7_01
第七章主讲函数相关,这里更好看7.1 可接受任意数量的参数的函数问题:如何构造一个可以接受任意多参数的函数方案:使用* 参数或者**接收任意多的位置参数def avg(first, *rest): return (first + sum(rest)) / (1 + len(rest))avg(1,2)1.5avg(1,2,3,4,4)2.8...原创 2018-09-09 14:22:58 · 192 阅读 · 0 评论 -
Python Cookbook学习笔记ch6_01
第六章了,坚持!本章主要设计一些文本读写和编码。here更好看6.1读写CSV文件问题:如何读写csv格式的文件方案:使用csv库函数:reader()、DictReader()、writer()、DictWriter()、writerow()、writerows()import csvwith open('data_file/stocks.csv','r') as f:...原创 2018-09-06 14:37:51 · 164 阅读 · 0 评论 -
Python Cookbook学习笔记ch6_02
这里更好看6.4增量式解析大型XML文件问题:如何使用较少的内存从一个超大的XML中提取数据方案:任何时候,只要是增量式的处理数据,就要想到使用迭代器或者生成器from xml.etree.ElementTree import iterparsedef parse_and_remove(filename,path): path_parts = path.split(...原创 2018-09-07 15:07:11 · 219 阅读 · 0 评论 -
Python Cookbook学习笔记ch7_02
这查看效果更好7.7匿名函数捕获变量值问题:利用lambda定义了一个函数,想在定义时捕获变量的值方案:将参数定义为默认参数# 先看个例子x = 10a = lambda y: y + xx = 20b = lambda y: y + x#现在你认为a(10)和b(10)的结果是多少?a(10)30b(10)30这其中的奥妙在于 l...原创 2018-09-11 08:55:13 · 269 阅读 · 0 评论 -
Python Cookbook学习笔记ch8_01
前段时间出差,就把写博客做笔记的事放下了(惭愧),之后又忙着开题。现在开始继续坚持写。## 这里查看[JupyterNotebook](http://nbviewer.jupyter.org/github/fangichao/python_cookbook/blob/master/ch8_01.ipynb)模式8.1改变对象的字符串显示问题:想要改变对象实例的打印或显示输出,让他们更具可...原创 2018-10-25 18:35:36 · 213 阅读 · 0 评论 -
Python Cookbook学习笔记ch8_02
8.8子类中扩展property问题:在子类中想要扩展在父类中的property功能方案:见下述代码class Person: def __init__(self,name): self.name = name @property def name(self): return self._name @name.setter...原创 2018-10-26 15:13:35 · 271 阅读 · 0 评论 -
Python cookbook学习笔记ch8_03
Jupyter notebook模式下查看效果更加噢!8.12定义接口和抽象基类问题:想要定义一个接口或者抽象基类,并且通过执行类型检查来确保子类实现了某些特定的方法方案:使用abc模块可以很容易的定义抽象基类from abc import ABCMeta,abstractmethodclass IStream(metaclass = ABCMeta): @abstractm...原创 2018-10-29 16:48:16 · 215 阅读 · 0 评论 -
Python Cookbook学习笔记ch8_04
Jupyter notebook阅览效果更佳8.16在类中定义多个构造器问题:实现一个类,但是想要使用__init__()以外的初始化方式方案:为了实现多个构造器,需要使用类方法import timeclass Data: '''使用类方法''' def __init__(self, year, month, day): self.year = yea...原创 2018-10-31 16:29:05 · 209 阅读 · 0 评论 -
Python Cookbook学习笔记ch8_05
Jupyter notebook模式查看效果,不一样的感觉,哈哈8.21实现访问者模式问题:需要处理大量不同类型的对象组成的复杂数据结构,每个对象需要进行不同的处理。比如遍历一个树形结构然后根据每个节点的状态执行不同的操作方案:见下class Node: passclass UnaryOperator(Node): def __init__(self,operand)...原创 2018-11-02 15:04:28 · 228 阅读 · 0 评论 -
Python Cookbook学习笔记ch9_01 元编程
Jupyter notebook阅读体验更好软件开发领域最经典的口头禅就是“don’t repeat yourself”。解决代码重复的问题可以使用元编程,即创建关于操作源代码得函数和类,主要用到的技术有装饰器、类装饰器、元类,还有其他的诸如:签名对象、使用exec()执行代码以及对内部函数和类进行反射技术等9.1在函数上添加包装器问题:想在函数上添加一个包装器,增加额外的操作处理(如...原创 2018-11-05 19:22:15 · 272 阅读 · 0 评论 -
Python Cookbook学习笔记 ch9_03元编程
【Jupyter notebook 传送门】9.15 定义有可选参数的元类问题:想要定义一个元类,它的参数是可选的,这样可以控制或者配置类型的创建过程方案:使用“metaclass”关键字参数指定特定的元类from abc import ABCMeta,abstractmethodclass IStream(metaclass=ABCMeta): @abstractmetho...原创 2018-11-25 19:26:44 · 195 阅读 · 0 评论 -
Python Cookbook学习笔记 ch9_04 元编程
【Jupyter Notebook传送门】9.19 在定义的时候初始化类的成员问题:想要在类定义的时候初始化一部分类的成员,而不是等到实例被创建的时候方案:本质上,一个元类会在定义时被触发,这时候可以执行一些额外的操作import operatorclass StructTupleMeta(type): def __init__(cls,*args, **kwargs): ...原创 2018-11-25 19:28:34 · 195 阅读 · 0 评论 -
Python Cookbook学习笔记ch6_03
这里哈哈更方便看有些自己的代码并没有成功。6.9编码喝解码十六进制问题:如何将十六进制字符串解码成一个字节字符串或者反过来执行方案:可以使用binascii模块的b2a_hex()和a2b_hex()import binasciis = b'hello'h = binascii.b2a_hex(s)hb'68656c6c6f'binascii.a2b_...原创 2018-09-08 18:55:30 · 219 阅读 · 0 评论 -
Python Cookbook学习笔记ch5_03
点我这里更好看5.14 忽略文件名编码问题:想使用原始文件名执行文件的I/O操作,即文件名并不经过系统默认的编码去解码或者编码方案:使用一个原始字节串来指定文件名# 默认情况,所有的文件名都会根据sys.getfilesystemencoding()返回的文本编码来解码或者编码import syssys.getfilesystemencoding()'utf-8'...原创 2018-09-05 14:06:39 · 678 阅读 · 0 评论 -
Python Cookbook学习笔记ch4_02
点我查看效果更好4.8跳过迭代对象得开始部分问题:如何遍历可迭代对象除了开始几个元素以外的所有元素方案:使用itertools模块的dropwhile()函数with open('data_file/ch4_02.txt') as f: for line in f: print(f,end=' ')<_io.TextIOWrapper nam...原创 2018-09-02 15:27:58 · 307 阅读 · 0 评论 -
Python Cookbook学习笔记ch2_01
第二章,也可以去这里查看笔记噢虫洞在这里2.1使用多个界定符分隔字符串问题:将一个字符串分隔为多个字段,但是分隔符并不是固定的方案:string对象的split() 只适用于简单的字符串分隔,他不允许有多个分隔符或者分隔符周围不确定的空格。可以使用re.split()line = 'asdf fsff; frf, dfsfe,asd. daffpp'import rere...原创 2018-08-27 14:53:02 · 294 阅读 · 0 评论 -
Python Cookbook学习笔记ch1_03
1.15通过某个字段将记录分组问题:如何根据某个特定的字段对一个序列分组迭代访问方案:使用itertools.groupby().使用groupby时首先要对元素进行排序。因为groupby只会扫描连续的元素rows = [{'address': '5412 N CLARK', 'date': '07/01/2012'},{'address': '5148 N CLARK',...原创 2018-08-31 08:52:40 · 176 阅读 · 0 评论 -
Python Cookbook学习笔记ch1_03
1.15通过某个字段将记录分组问题:如何根据某个特定的字段对一个序列分组迭代访问方案:使用itertools.groupby().使用groupby时首先要对元素进行排序。因为groupby只会扫描连续的元素rows = [{'address': '5412 N CLARK', 'date': '07/01/2012'},{'address': '5148 N CLARK',...原创 2018-08-31 08:54:19 · 141 阅读 · 0 评论 -
Python Cookbook学习笔记ch1_01
第一章(1)第一次发博客,使用md,内心有点小激动,哈哈。此次博客之旅用于记录自己学习Python Cookbook的笔记。希望自己能够坚持下去。学习的过程中主要使用Jupyter notebook作为工具,主要是复现了书中的代码,并加上自己的一些注解。第一次编辑博客,等会不知道什么效果。希望大家多多批评指正(不要都是批评呀呀呀,不然还未出发就以回头,先谢谢大家的鼓励)按照网上...原创 2018-08-24 10:12:12 · 253 阅读 · 0 评论 -
Python Cookbook学习笔记ch3_02
HERE查看笔记效果更好噢大型数组运算问题:需要在大型数据集上计算方案:采用numpyx = [1,2,3,4]y = [5,6,7,8]x*2[1, 2, 3, 4, 1, 2, 3, 4]x+10---------------------------------------------------------------------------T...原创 2018-08-31 20:21:14 · 573 阅读 · 0 评论 -
Python Cookbook学习笔记ch2_02
也可以去这里查看笔记2.7最短模式匹配问题:你正在使用正则表达式匹配某个文本,但是它找到的是模式的最长可能匹配,把它修改成查找最短的可能匹配方案:可以在模式操作符后面加上?修饰符在下面例子中,模式 \”(.)\” 的意图是匹配被双引号包含的文本。但是在正则表达式中 操作符是贪婪的,因此匹配操作会查找最长的可能匹配。于是在第二个例子中搜索 text2 的时候返回结果并不是我们想要的...原创 2018-08-29 10:16:33 · 214 阅读 · 0 评论 -
Python Cookbook学习笔记ch2_03
第二章收尾,这里查看效果更佳噢!2.13 字符串对齐问题:如何通过某种对其方式格式化字符串方案:对于基本的对齐方式可以使用ljust()、rjust()、center()方法text = 'Hello world'text.ljust(20)'Hello world 'text.rjust(20)' Hello world'...原创 2018-08-29 17:37:30 · 586 阅读 · 0 评论 -
Python Cookbook学习笔记ch4_01
第四章迭代器与生成器敢点我给你好看查看效果更好噢4.1手动遍历迭代器问题:想要遍历一个可迭代对象,不使用for循环方案:手动遍历,使用next()函数def manual_iter(): with open('data_file/test1_3.txt') as f: try: while True: ...原创 2018-09-01 15:25:24 · 197 阅读 · 0 评论 -
Pyhton Cookbook学习笔记ch5_02
你发现了虫洞这里查看效果更好5.8固定大小记录文件迭代问题:想在一个固定长度记录或者数据块的集合上迭代,而不是在一个文件中一行一行的迭代使用iter和functools.partial()说明:iter()可以接受两个参数,一个可迭代对象、一个标记值,它会创建一个迭代器,并一直调用可调用对象直到返回标记值为止from functools import partialREC...原创 2018-09-04 14:02:32 · 171 阅读 · 0 评论 -
Python Cookbook学习笔记ch3_01
第三章,[这里查看效果更好奥](http://nbviewer.jupyter.org/github/fangichao/python_cookbook/blob/master/ch3_01.ipynb)3.1数字的四舍五入问题:对一个浮点数执行指定精度的的舍入运算方案:使用内置的round(value,ndigits)注意:当一个数正好处于两个整数之间时,例如1.5或者2.5都会舍...原创 2018-08-30 14:18:41 · 263 阅读 · 0 评论 -
Pyhton Cookbook 学习笔记 ch9_02 元编程
【传送门】9.8 将装饰器定义为类的一部分问题:想在类中定义装饰器,并作用在其他的函数上方案:在类中定义装饰器首先要确定它的使用方法,是作为一个实例方法还是作为一个类方法from functools import wrapsclass A: #作为一个实例方法 def decorator1(self,func): @wraps(func) ...原创 2018-11-24 22:59:57 · 184 阅读 · 0 评论