Archive for 12月, 2006

《深入python》学习笔记之正则表达式

^ 匹配字符串的开始。
$ 匹配字符串的结尾。
\b 匹配一个单词的边界。
\d 匹配任意数字。
\D 匹配任意非数字字符。
x? 匹配一个可选的x字符(换句话说,它匹配1次或者0次x 字符)。
x* 匹配0次或者多次x字符。
x+匹配1次或者多次x字符。
x{n,m} 匹配x字符,至少n次,至多m次。
(a|b|c)要么匹配a,要么匹配b,要么匹配c。
(x) 一般情况下表示一个记忆组(remembered group). 你可以利用re.search函数返回对象的groups()函数获取它的值。

《深入python》学习笔记之异常和文件处理

1、文件对象的 seek 方法在打开文件中移动到另一个位置。第二个参数指出第一个参数是什么意思:0 表示移动到一个绝对位置 (从文件开始算起),1 表示移到一个相对位置 (从当前位置算起),还有 2 表示对于文件尾的一个相对位置。
2、对一个文件已经关闭的文件对象调用 close 不会 引发异常,它静静地失败。

《深入python》学习笔记之对象和面向对象

1、UserDict的update 方法是一个字典复制器:它把一个字典中的键和值全部拷贝到另一个字典。 这个操作 并不 事先清空目标字典,如果一些键在目标字典中已经存在,则它们将被覆盖,那些键名在目标字典中不存在的则不改变。应该把 update 看作是合并函数,而不是复制函数。
2、python没有任何形式的函数重载
3、真正字典的 copy 方法会返回一个新的字典,它是原始字典的原样的复制(所有的键-值对都相同)。
4、直接继承自内建数据类型的类不需要明确的初始化,即明确调用__init__,因为内建数据类型不是一个封装。
5、专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。
6、在 Python 中需要手工执行调用父类的方法,不会自动为你完成。
7、repr 函数是一个内置函数,它返回一个对象的字符串表示。它可以用在任何对象上,不仅仅是类的实例。
8、__cmp__ 在比较类实例时被调用。通常,你可以通过使用 == 比较任意两个 Python 对象,不只是类实例。对于类实例,你可以定义 __cmp__ 方法,自已编写比较逻辑,然后你可以使用 == 来比较你的类,Python 将会替你调用你的 __cmp__ 专用方法。
9、__len__ 在调用 len(instance) 时被调用。len 是一个内置函数,可以返回一个对象的长度。它可以用于任何被认为理应有长度的对象。字符串的 len 是它的字符个数;字典的 len 是它的关键字的个数;列表或序列的 len 是元素的个数。对于类实例,定义 __len__ 方法,接着自已编写长度的计算,然后调用 len(instance),Python 将替你调用你的 __len__ 专用方法。
10、__delitem__ 在调用 del instance[key] 时调用,当你在类实例中使用 del 时,Python 替你调用 __delitem__ 专用方法。
11、在 Java 中,通过使用 str1 == […]

《深入python》学习笔记之自省的威力

1、0、’’、[]、()、{}、None 在布尔上下文中为假;其它任何东西都为真。
2、如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。如果布尔上下文中的某个值为假,则 and 返回第一个假值。在这个例子中,’’ 是第一个假值。
3、使用 or 时,在布尔上下文中从左到右演算值。如果有一个值为真,or 立刻返回该值。如果所有的值都为假,or 返回最后一个假值。
4、or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值。