04 2011 档案
摘要:(转载请注明原创于潘多拉盒子)先来看一段程序:funs = [lambda x: x**k for k in range(0, 4)]res = [f(2) for f in funs]print res结果是什么呢?结果是这样的:[8, 8, 8, 8],如果不感到意外,说明你已经理解了python,或者没看懂:)如果意外,请看下面的分析:实际上,[lambda x: x**k for k in range(0, 4)],创建了4个lambda表达式,每个表达式都是lambda x: x**k,而k最终是等于3。于是4个lambda表达式都是lambda x: x**3 !怎样才能根据不同的
阅读全文
摘要:Python的内建类型分为两种:一种是不可改写类型,另一种是可改写类型。Python的变量是一个引用,其所指对象的类型及内容信息完全存储在对象本身,而不存储在变量上。不可改写类型包括bool, int, float, string, tuple,这些类型的特点是一旦被赋值,无法在对象上就地(in place)修改对象的内容。如果要改写变量所指对象的内容,则必须新建一个对象,使新的对象具有需要的值,再将这个对象赋给变量。变量原先所指的对象的引用计数减1。可改写性是对象的内在属性,你无法通过任何方法就地改写对象本身。如s = 'abcd's[0] = 'd'以上句子
阅读全文
摘要:有对象要持久化,就离不开序列化和反序列化。对象是立体的,而存储却是线性的,因此叫序列化。比如我们构造一个python对象:d = {'coffee': 1, 'tea': 2, 'water': 3}这是一个字典。进行序列化的操作:f = open('favorite.dict', 'wb')import picklepickle.dump(d, f)f.close()进行反序列化操作:f = open('favorite.dict', 'rb')d = pickle.load(f)
阅读全文