为丢失的输入数据添加安全失败选项
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
解决方案很好。
我有一个这样的示例函数:
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
解决方案很好。