scipy.special.

seterr#

scipy.special.seterr(**kwargs)#

設定特殊函數錯誤的處理方式。

參數:
all{‘ignore’, ‘warn’ ‘raise’}, 選填

一次設定所有類型特殊函數錯誤的處理方式。選項如下

預設為不變更目前的行為。如果指定了其他特殊函數錯誤類別的行為,則會先套用 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)