星期三, 十二月 31, 2008

曾国藩言(一)

天下事,有所利有所贪者成其半,有所激有所逼者成其半

星期六, 十二月 13, 2008

basic tips of python(2)

1、==与is:python可以通过使用 == 比较任意两个 Python 对象(不只是类实例),返回的值不是比较内存地址的值(不同于java),而是返回比较对象调用__cmp__方法后的值。
例如,dict在有着全部相同的关键字和值时返回true,list在元素个数一样,且各个值也相等时也是true。自己写的类通过编写 __cmp__ 方法,来自定义比较逻辑,然后你可以使用 == 来比较你的类,Python 将会调用你的 __cmp__ 专用方法。
那何如判断两个对象的地址一样呢(引用的是不是一个地方),可以用is,或者用id()取对象地址。

2、class中的方法,默认第一个参数一定是self。如果想不创建对象而直接引用module后调用的话,除了可以用@classmothed修饰,通常的做法是在module里定义个一个class的对象,然后引用它的方法。比如:
class a:
__str__ = "this is a class of test method"
def gen(self):
return self.__str__

_a = a()
gen = _a.gen #在另外的module中直接引用gen,实际上,_a.gen就把_a当作self传过去了

3、对文件路径的操作,除了os 和path外,还可以import glob。
glob.glob()方法支持用通配符过滤,比如glob.glob('*.mp3')返回的就是相对路径下的mp3文件名。
glob.glob("G:\music\pop\*.mp3"),返回的是这个路径下所有匹配的文件名。