Python的陷阱

发表时间 ·

写python程序时有些陷阱需要注意,不然就会对bug视而不见,或者得不到想要的结果。

list的append无返回值

list列表的append函数只做原位(in place)操作,改变原有的列表的内容,而不是返回一个新的列表。

>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> b = a.append(5)
>>> print b
None
>>> print a
[1, 2, 3, 4, 5]
>>>

list的sort无返回值

与append函数类似,sort也只做原位(in place)操作,在原有的列表内排序,而不返回一个新的列表。

shelve对象

>>> import shelve
>>> s = shelve.open('test.dat')
>>> s['x'] = ['a', 'b', 'c']
>>> s['x'].append('d')
>>> s['x']
['a', 'b', 'c']

上面的例子里,shelve的open函数返回的对象虽然看起来和普通的列表一样,但是在调用sync( )之前,它的值不会发生改变,所以,当s[‘x’]再次被读取时,仍然是原始的值,‘d’字符没有保存进shelve


相关文章   欢迎到 留言板 写下你的看法。
  本页面内容采用 署名协议 CC-BY 授权。欢迎转载,请保留原文链接