Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7612061 建立时间:2006年5月29日 |

| |
[Python]可爱的 Python: Decorator 简化元编程 软件技术
lhwork 发表于 2007/2/5 9:02:47 |
Python 使元编程成为可能,不过每个版本的 Python 都有一些细微的区别(并且不是完全兼容),这使我们实现元编程的道路变得更加崎岖。一类函数对象的使用由来已久,同样还有一些技术用于探索和实现魔术般的属性。在版本 2.2 中,Python 增加了一种很有帮助的定制元类机制,但是其代价就是令用户绞尽脑汁。最近,在 2.4 版本中,Python 增加了 “decorator” ,这是适于执行大部分元编程的最新方式 —— 也是到目前为止对用户最友好的方式。
|
|
[Python]Python Challenge 答案 (6-10) 软件技术
lhwork 发表于 2007/2/4 15:02:34 |
第6题: zip 模块 title提示是一对。 源代码中出现〈!-- 〈-- zip --〉字样 从http://www.pythonchallenge.com/pc/def/channel.zip 下载zip文件 (提示够变态吧) 打开zip文件中的readme.txt 可以看到 welcome to my zipped list.hint1: start from 90052 hint2: answer is inside the zip 感觉解题思路基本上和上面那个反复调用url的题一样 r=re.compile(r'(\d+)$') nextnothing='90052'while(1): try: f=open('./python challenge/%s.txt' % nextnothing) result=f.read()
|
|
[Python]Python Challenge 答案 (1-5) 软件技术
lhwork 发表于 2007/2/4 15:01:42 |
从没想过解题还能这么有趣。 刚打开pythonchallenge的站点时有点莫名其妙的感觉,并不清楚到底问题在哪里。后来发现其中的奥秘就是你要在他所给的线索中找到下一题的url,这样便可以进入下一关了。 python challenge中有几个地方是重要的线索来源: 1:title (其中通常含有解题的思路提示) 2:page source (页面源代码,中间通常有数据资源,或者指明数据资源的位置)
第0题: 出现一幅画面,上面写着2**38,教你如何进入下一关。 计算出2**38 = 将浏览器中的 http://www.pythonchallenge.com/pc/def/0.html 改成 http://www.pythonchallenge.com/pc/def/274877906944.html 即可
第1题:密码转换 图片中显示出字符转换的规律 new_c=chr(ord(old_c)+2) 超过自动回转 title中提示making trans 因此比较简单的方法是直接 |
|
[Python]python 的 urllib 如何处理gzip的页面数据 软件技术
lhwork 发表于 2007/2/4 14:48:59 |
python-cn上一个朋友提出的问题,自己以前也没想过,恰巧django中有一个middleware是做gzip处理的,看了一下它的代码,了解到可以通过StringIO的方式,将字符串以文件的形式来进行处理。 StringIO应该是一个非常有用的模块,因为很多函数都是只支持文件的,使用它后就没有问题了。
import urllib2 import cStringIO import gzip
f=urllib2.urlopen('http://www.gzip.com/aaaxxx ') #gzip url zbuf=cStringIO.String(f.read()) print gzip.GzipFil |
|
[Python]图片批处理的脚本 软件技术
lhwork 发表于 2007/2/2 15:57:18 |
国庆出去玩,拍了一些相片要寄给家人。打开文件夹一看,200M,不知道要传到什么时候,所以必须的缩小一些。一两张还可以用ps改改,100多张?! 花了5分钟写了一段程序来处理,立即搞定,前提是计算机上要装有python和Python Imaging Library (PIL) 程序很简单
下载: batch.py
|
|
[Python]TCP网络程序的基本框架 软件技术
lhwork 发表于 2007/2/2 15:56:59 |
这段时间看了不少网络程序的代码,也动手写了几个server/client.总结一下,大部分网络程序使用的是tcp,用udp只有3个理由: 1.允许一定的包丢失 2.需要做nat穿透 3.节省资源,如socket句柄.
而大多数应用层通讯协议,特别是数据量传输比较大的,为了效率和可靠性都会采用tcp.而TCP是流结构,应此要考虑2种情况: 1.发送数据被阻塞 2.接受包不完整或者多余. 虽然tcp是stream,但是为了解析网络数据都是基于二进制封包或者基于文本的token形式存在. 对二进制的封包来说,一般结构如下:
|
|
[Python]Python中的单元测试 软件技术
lhwork 发表于 2007/2/2 15:56:11 |
我用过的testunit有Nunit,Pyunit,Dunit,从易用性来说Pyunit>Nunit>Dunit,这个是由语言特性决定的.PyUnit有不同的实现,python标准库中有一个自带的. 不过说回来,脚本语言unittest的重要性并没有这么大,因为在每个程序文件中随手定义一些测试函数,直接运行就是.这里unittest 模块存在的意义在于能够打印一些profile信息 它的使用非常简单,你的测试类必须是unittest.TestCase的子类,然后定义相应的测试函数,只要把函数名称写成testXXX的格式,然后运行unittest.main(),这些测试函数就会被调用.另外,unittest.TestCase提供了一个函数setUp,这个函数会在每个测试函数被调用之前都调用一次,如果需要做一些初始化处理,可以重载这个函数.unittest模块还提供了一些高级功能,可以查看帮助.
阅读全文(1755) | 回复(0) | 编辑 | 精华 | 删除 |
| | |
|