2009 4 22 08:41 PM 2600 次查看
分类:Python 标签:Python
昨晚写聊天室时,遇到一个排序的问题,所以便稍作研究,记录了下来。
先看sorted(iterable[, cmp[, key[, reverse]]])这个内建函数,它会返回iterable排序后的列表。看上去参数很多,所以慢慢研究。
2009 4 20 01:06 AM 2973 次查看
分类:Python 标签:Python
由于某些应用经常要限制列表的长度,所以就自己写了个类。
其实直接继承list更方便,不过我还是用包含来实现了,正好巩固一下内置操作。
私有成员我也没写2个下划线,需要的自己替换下就行了。
后面那一大段代码是单元测试,引入模块时可以删去。
2009 4 12 07:47 PM 8151 次查看
分类:Python 标签:Python
2009 4 12 03:30 PM 4283 次查看
分类:Python 标签:Python
metaclass一般译作元类,它是一个类的类(型)。简单来说,元类的实例是一个类,而这个类的类就是元类了。
也就是说,相对于类可以在运行时动态构造对象而言,元类也可以在运行时动态生成类。
在C++等语言中,要得知一个对象的类是很麻烦的(MFC是用宏来实现的);而Python由于有自省功能,所以非常简单。
2009 4 12 12:08 PM 3540 次查看
分类:Python 标签:Python
Decorator模式一般被翻译成装饰模式,它主要是用于扩展已有的功能。
一般而言,扩展只需要继承即可。但因为继承是静态的,无法动态扩展,于是会有很大的局限性。
考虑一下Java的java.io.Reader类,它有很多子类,它们之间的组合如果都用继承来实现的话,我想会是超枯燥的。
所以当我们需要一个缓冲的文件读取器,我们不会去创建一个FileBufferedReader对象,而是像下面这样创建:
Reader reader = new BufferedReader(new FileReader(filename))
这样的好处就是,我们可以随意地动态组合这些功能,而不是为每种组合都创建一个类。
在静态语言里,要实现Decorator模式是很麻烦的,因为你可能需要定义3个类。
不过在Python这种动态语言里,你完全不需要定义类,因为函数本身就是可以扩展的。
2009 4 6 10:32 AM 1456 次查看
分类:Python 标签:Python
详细更新内容请看What's New in Python 3.1 alpha 2?。
看到有个自动填充数字的功能(以前要在大括号里写序号,不知道是否提供中途指定序号的功能):'{} {}'.format(1, 2) == '1 2'
其他没什么我关心的了,嘛,至少我觉得目前的2.6比3.x更出色。
2009 4 3 07:16 PM 2348 次查看
分类:Python 标签:Python
2009 3 30 12:57 AM 4397 次查看
分类:Python 标签:Python
直接看代码吧,没什么需要多说的。>>> '%x' % 1234
'4d2'
>>> hex(1234) # 这个比格式化字符串慢1个数量级,慎用
'0x4d2'
>>> int('4d2', 16)
1234
>>> eval('0x4d2') # 这个比int函数慢1个数量级,慎用
1234
2009 3 27 05:41 PM 1755 次查看
分类:Python 标签:Python, 性能
详情可以查看项目计划(这里还有个项目计划翻译),今年1季度的性能测试如下:
2009 3 26 10:50 PM 2862 次查看
分类:Python 标签:Python
今天看《What’s New in Python 2.5》时,发现了一个有趣的新语法,可以模拟C中的c ? x : y(之前是用and...or来模拟,代码读起来不够直观)。