[算法工程师之]避免Python Bug需要注意的细节

  • list + *需要留意
    这里写图片描述
    如图所示,list指令的+``*与我们通常所理解的数组元素操作不一致。容易引起因弄错数据类型而带来的变量值改变问题。
    在写程序和调试的时候,需注意list的使用是否正确。

  • import & reload
    当写好我们的程序,即*.py文件,用import加载到python shell中执行时,会产生*.pyc文件,以加速下一次import。
    当修改*.py文件后,此时*.pyc文件并没有进行相应的改动。若使用import则会产生看起来修改无效的bug。所以记得使用reload

  • 变量只是指针而已
    这里写图片描述
    如图所示,list的赋值,并没有开辟新的内存空间。两个变量拥有一样的内存地址。
    这种object在python中叫做mutable object,包含list、。integer、float、string是immutable object。tuples是只能赋值不能改变的。

  • dict & OrderedDict
    使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
    如果要保持Key的顺序,可以用OrderedDict,它是collections模块中的一个功能。

>>> from collections import OrderedDict
>>> d = dict([('a', 1), ('b', 2), ('c', 3)])
>>> d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:

>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> od.keys() # 按照插入的Key的顺序返回
['z', 'y', 'x']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值