Numpy:尝试/除了函数内部无法打印消息

时间:2015-11-02 13:25:57

标签: python numpy

我写了一个简单的函数来使用numpy对我的光谱进行基线减法。代码如下所示:

import numpy as np
def bas_sub(baseline_y, spectrum_y):
    try:
        len(baseline_y)==len(spectrum_y)
        spectrum_new =  np.copy(spectrum_y)-baseline_y
        return spectrum_new
    except:
        print 'Baseline and spectrum shoud have the same length.'

其中基线和光谱是两个1D numpy阵列。我希望我的功能是一个简单的长度检查,即如果基线和光谱有不同的长度,函数应该打印消息:'基线和光谱应该具有相同的长度'。该功能适用​​于相同长度的输入但是在打印具有不同长度的输入的消息时失败。在最后一种情况下,函数输出是NoneType对象。我做错了什么? 谢谢

2 个答案:

答案 0 :(得分:1)

除了阻止之外,没有任何东西会抛出异常被捕获。

异常处理不是正确的模式。你应该只使用if / else语句:

def bas_sub(baseline_y, spectrum_y):
    if len(baseline_y) == len(spectrum_y):
        spectrum_new = np.copy(spectrum_y) - baseline_y
        return spectrum_new
    else:
        print 'Baseline and spectrum shoud have the same length.'

答案 1 :(得分:0)

另一种方法是使用断言:

import numpy as np
def bas_sub(baseline_y, spectrum_y):
    assert len(baseline_y)==len(spectrum_y), "Baseline and spectrum shoud have the same length."
    spectrum_new =  np.copy(spectrum_y)-baseline_y
    return spectrum_new