在IPython交互控制台中,是否不仅可以显示产生错误的行,还可以显示列?你知道吗
例如,在这个脚本中,我知道有问题的行是934,但是我无法找到哪个语句生成了错误,因为我不知道该列。你知道吗
--> 934 dQ0 = (Knm0[u, :] + W0[u, u] - Knm0[u, ma]) - multiply((Kn0[u]), (Km0 + Kn0[u] - Km0[ma])) / s0
935 dQ1 = (Knm1[u, :] + W1[u, u] - Knm1[u, ma]) - multiply((Kn1[u]), (Km1 + Kn1[u] - Km1[ma])) / s1
936 dQ = d0 * dQ0 - d1 * dQ1
IndexError: invalid index to scalar variable.
通常,最短的调试方法是:
(或者如果
%automagic
处于启用状态,则仅debug
)。这会将您放入发生故障的调试器中。然后您可以转储不同的对象,即Knm0
、Kn0
,等等,或者尝试不同的块,比如Knm0[u,:]
,看看哪个抛出了错误,对象是什么样子,等等在您的案例中,似乎您试图对非数组的内容使用切片,例如执行
245[0]
是不合法的。所以问题并不是哪一列那么简单-这一行根本不是问题所在,它很可能是上面的某一行生成了这一行使用的变量,而这些变量实际上存在错误。你知道吗假设我正确理解了你的问题,改变一下:
至
以此类推,把大问题分成几部分,直到你确切地知道问题在哪里
复杂的oneliner语句使代码在数月/数年后更难调试或理解,也更难被其他没有编写您的代码的人理解
相关问题 更多 >
编程相关推荐