scipy.special.
seterr#
- scipy.special.seterr(**kwargs)#
设置处理特殊功能错误的方式。
- 参数:
- all{‘ignore’, ‘warn’ ‘raise’}, 可选
一次性为所有类型的特殊功能错误设置处理方法。选项为:
‘ignore’ 在错误发生时不采取任何操作
‘warn’ 在错误发生时通过 Python
warnings
模块打印SpecialFunctionWarning
。‘raise’ 在错误发生时引发
SpecialFunctionError
。
默认情况下不更改当前行为。如果指定了其他特殊函数错误类别的行为,则先应用
all
,然后再应用其他类别。- singular{‘ignore’, ‘warn’, ‘raise’}, 可选
对奇点的处理方法。
- underflow{‘ignore’, ‘warn’, ‘raise’}, 可选
对下溢的处理方法。
- overflow{‘ignore’, ‘warn’, ‘raise’}, 可选
对上溢的处理方法。
- slow{‘ignore’, ‘warn’, ‘raise’}, 可选
对缓慢收敛的处理方法。
- loss{‘ignore’, ‘warn’, ‘raise’}, 可选
对精度损失的处理方法。
- no_result{‘ignore’, ‘warn’, ‘raise’}, 可选
无法找到结果的处理。
- domain{‘ignore’, ‘warn’, ‘raise’}, 可选
函数无效参数的处理。
- arg{‘ignore’, ‘warn’, ‘raise’}, 可选
函数无效参数的处理。
- other{‘ignore’, ‘warn’, ‘raise’}, 可选
未知错误的处理。
- 返回值:
- olderrdict
包含旧设置的字典。
另请参见
geterr
获取处理特殊函数错误的当前方式
errstate
处理特殊函数错误的上下文管理器
numpy.seterr
类似的 numpy 函数(用于处理浮点错误)
示例
>>> import scipy.special as sc >>> from pytest import raises >>> sc.gammaln(0) inf >>> olderr = sc.seterr(singular='raise') >>> with raises(sc.SpecialFunctionError): ... sc.gammaln(0) ... >>> _ = sc.seterr(**olderr)
我们还可以为除了一项外的每个类别引发错误。
>>> olderr = sc.seterr(all='raise', singular='ignore') >>> sc.gammaln(0) inf >>> with raises(sc.SpecialFunctionError): ... sc.spence(-1) ... >>> _ = sc.seterr(**olderr)