【发布时间】:2016-07-02 21:18:10
【问题描述】:
我不明白。对于相同的情况,调试控制台和运行程序可以返回不同的结果吗?怎么样?
arrRegion_masks = []
test = []
for image_stack in videoData:
for i in xrange(numROIs):
roi = self.vb.rois[i]
arrRegion_mask = roi.getROIMask(image_stack,self.vb.img, axes=(0,1)) ## BREAKPOINT HERE
arrRegion_masks = arrRegion_masks.append(arrRegion_mask)
我在调用时有一个断点来检索掩码。 ArrRegion_mask 被返回,它只是一个 2D numpy 数组,如下所示:
>>> arrRegion_mask
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]])
然后,如果我越过下一行将其附加到arrRegion_masks,它将变为None,然后导致
File "/home/cornelis/PycharmProjects/BMDanalyse/BMDanalyse/BMDanalyse.py", line 343, in getBMD
arrRegion_masks = arrRegion_masks.append(arrRegion_mask)
AttributeError: 'NoneType' object has no attribute 'append'
不处于调试模式时我也会得到这个。
为什么这特别令人困惑?因为当我在断点和调试器中时,我可以调出 python 提示符并执行以下操作并得到我期望的结果
>>> test = test.append(arrRegion_mask)
>>> test
[array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]])]
那么调试器和我的运行代码会针对相同的情况给出不同的结果吗?这对我来说非常令人不安,因为这意味着我不能理解一些非常基本的东西,因为我一直认为这不应该。请帮我解释一下。
【问题讨论】:
标签: python debugging numpy append pycharm