为丢失的输入数据添加安全失败选项

Adding a safe fail option for missing input data

我有一个这样的示例函数:

def obtain_value(input_value):
    return max(input_value, 5)

我想在传递的输入值为 None 或 NaN 时设置安全失败选项。因此,它应该安全地失败,而不是仅仅抛出一些异常。

您可以在函数中使用 try / except。这样,即使将 None 作为输入传递,该函数也能正常工作。或者你的意思是安全失败?

def obtain_value(input_value):
    try:
        return max(input_value, 5)
    except TypeError:
        return

或者只有传了int或float才可以执行:

def obtain_value(input_value):
    if type(input_value) in [int, float]:
        return max(input_value, 5)

NaN(由 numpy 定义)是一个有效的“无限”数字,因此比较有意义并且不会抛出 TypeError。如果你想避免它,最好是事先过滤它:

def obtain_value(input_value):
    if input_value in [np.NaN, None]: # or more value considered possible but undesirable
        return None # fail safe
    return max(input_value, 5)

如果您期望更多会触发异常的“奇特”类型(str 或其他),@Rutger 的try/except 解决方案很好。