scipy.special.
seterr#
- scipy.special.seterr(**kwargs)#
设置特殊函数错误的M处理方式。
- 参数:
- all{‘ignore’, ‘warn’ ‘raise’}, 可选
一次性设置所有类型特殊函数错误的处理方式。选项包括:
‘ignore’ 错误发生时不做任何处理
‘warn’ 错误发生时打印
SpecialFunctionWarning
(通过 Pythonwarnings
模块)‘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)