mattkang

他掀开被单,整了整胸前的红领巾,开始了这段编程旅程

飘逸的python - 多条件排序及itemgetter的应用

曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣。 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相同按进球数,再相同按失球数。 即按积分P、净胜球GD、进球GS、失球GA这样的顺序。 在pytho...

2013-07-29 20:49:52

阅读数:7107

评论数:0

飘逸的python - @staticmethod和@classmethod的作用与区别

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法,而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。 这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。 既然@staticmethod和...

2013-07-29 13:29:41

阅读数:69199

评论数:6

飘逸的python - 一段统计次数程序的进化

这段程序是从给定的列表中统计各个小伙伴以及他们的出现次数。 littlebuddys = ['jack','terry','john','rooney','ross','kzc','john','ross','ross'] 新手程序员 d = {} for buddy in littleb...

2013-07-28 07:42:07

阅读数:3666

评论数:6

飘逸的python - hack输出流便于调试

当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟。 先上代码和效果,再说明。 import sys,traceback class mystdout: stdout = sys.stdout def write(sel...

2013-07-27 09:22:20

阅读数:3415

评论数:0

飘逸的python - super()只不过是用来避免硬编码的

当在子类需要调用父类的方法时,在python2.2之前,直接用类名调用类的方法,即非绑定的类方法,并把自身对象self作参数传进去。 class A(object): def say(self): print 'I am A' class B(A): def sa...

2013-07-26 10:25:55

阅读数:2422

评论数:0

飘逸的python - 两种with语句实现方法

第一种是实现上下文管理器协议,即魔法方法__enter__和__exit__。 class Foo: def __enter__(self): print 'in' def __exit__(self, type, value, trace): ...

2013-07-25 13:36:56

阅读数:2198

评论数:0

飘逸的python - zlib压缩存到数据库

当每天有大量的数据存到kv数据库中去,且value数据很大,于是想压缩后再存进去。 之前提到了gzip压缩,为什么不直接用gzip呢。 其实更确切的说gzip是一种文件格式,它压缩成gzip文件,而我是要压缩存到数据库中去。 gzip是对zlib的包装,添加了一些额外的信息。 zlib是一...

2013-07-25 08:17:26

阅读数:2627

评论数:0

飘逸的python - 用urlparse从url中抽离出想要的信息

最近有个需求,要检测配置中的那些url的域名是否都正常,即是否都能ping通。 不过配置中url格式是这样的 。 要ping的是 要把url中的域名抽离出来,一般会想到的是切割字符串,或者用正则表达式。 不过有个更干净利落的方法,就是python标准库自带的urlparse。url的各个部分都

2013-07-23 13:09:32

阅读数:2435

评论数:0

飘逸的python - 简明gzip模块压缩教程

压缩数据创建gzip文件 先看一个略麻烦的做法import StringIO,gzip content = 'Life is short.I use python' zbuf = StringIO.StringIO() zfile = gzip.GzipFile(mode='wb', compre...

2013-07-22 07:55:54

阅读数:10011

评论数:0

飘逸的python - 中文编码长度有趣的现象

最近在做验证用户姓名的功能时发现这样一个现象。 >>len(u'打怪者') #unicode 3 >>len(u'打怪者'.encode('gbk')) #gbk 6 >>len('打怪者') #utf-8 9 一般都知道,gbk编码每个汉...

2013-07-21 11:43:12

阅读数:8764

评论数:0

飘逸的python - 嵌套太深了,让笛卡尔拉你一把

在多重循环的情况下,嵌套太深,代码难看死了。这时可以用标准库itertools 中的笛卡尔积product函数。 for x in ['a','b','c']: for y in ['d','e','f']: for z in ['m','n']: ...

2013-07-20 13:33:34

阅读数:5282

评论数:0

飘逸的python - inspect谁调用了我

当程序出现诡异的bug时,我们需要层层去跟踪,尤其是要理清顺序。 这时如果有个清晰的调用脉络调试就容易多了。 利用inspect模块的getframeinfo方法来实现这需求。 上代码感受下。 import inspect def foo(): who = inspect.getf...

2013-07-19 13:19:57

阅读数:4363

评论数:0

飘逸的python - 使用traceback获取详细的异常信息

try: 1/0 except Exception,e: print e 输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。 下面使用traceback模块 try: ...

2013-07-18 20:59:12

阅读数:60032

评论数:5

飘逸的python - 彩色你的控制台

在linux的终端中,ANSI转义序列来控制颜色 基本规则: 前面加上\033[,结尾用\033[0m重置为原来的颜色 可以在终端中输入下面这句,就可以看到输出绿色的hello。 >>echo -e '\033[0;32mhello\033[0m' 其中0;32m控制颜色。 最简单的...

2013-07-18 13:10:11

阅读数:4084

评论数:0

飘逸的python - 优雅的执行程序

在linux下,我们执行一个python程序是python /path/to/xxx.py。 如果这个程序经常使用,会觉得这样有点麻烦。 可以chmod +x /path/to/xxx.py,即给这个文件加上了可执行权限,就可以不用在前面敲python,直接/path/to/xxx.py运行了...

2013-07-14 12:57:39

阅读数:2531

评论数:1

grep显示匹配行的周围几行

简单来说,就是ABC。 A ->After B ->Before C ->Context 比如grep -A3 'foobar' a.txt,即把匹配到foobar的行的下面3行也给显示出来。

2013-07-12 12:51:22

阅读数:5396

评论数:0

飘逸的python - __dict__的妙用

设想这样一个场景。 我有一个字典,从某个地方获取的,比如http请求发过来的,比如从redis中hgetall出来的。我要根据这个字典来构建一个对象。 比如类 class Person: def __init__(self,_obj): self.name = _obj[...

2013-07-11 20:26:29

阅读数:5008

评论数:0

飘逸的python - 常见的几个坑

混用空格和tab python是严格缩进的,全用空格或者全用tab就没错,如果是混用就会有问题。如果用vim开发的话,一般是在配置中把tab转成4个空格。 用可变对象作为默认参数 def f(a=[]): a.append('kzc') return a >>> f() [...

2013-07-10 21:40:22

阅读数:2602

评论数:0

飘逸的python - str vs. repr

repr - 展示给开发者看的,目标是准确性,显示的是实际在python中的形式,一般可以用eval()给转换回去。 str - 展示给用户看的,目标是可读性,是经过包装的。 http://img.blog.csdn.net/20130710132259078" _xhe_src=&...

2013-07-10 13:24:10

阅读数:2275

评论数:0

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