[英]Why aren't Inf, -Inf and NaN keywords in Python?
在PEP 754的拒絕通知中,它聲明:
該PEP已被拒絕。 在開放四年后,它未能產生足夠的社區興趣。
為Python 2.6實現了這個PEP的幾個想法。 現在可以保證float('inf')和repr(float('inf'))可以在IEEE 754語義的每個支持平台上運行。 但是,除非您自己定義inf和nan,否則仍然不支持eval(repr(float('inf')))往返:
>>> inf = float('inf') >>> inf, 1E400 (inf, inf) >>> neginf = float('-inf') >>> neginf, -1E400 (-inf, -inf) >>> nan = float('nan') >>> nan, inf * 0. (nan, nan)
這似乎表明在Python中沒有對Inf,NaN和-Inf的本機支持,並且提供的示例是准確的! 但是,這是不必要的冗長:
$ python2.7
>>> 1e400
inf
>>> 1e400 * 0
nan
>>> -1e400 * 0
nan
>>> -1e400
-inf
$ python3
>>> 1e400
inf
>>> 1e400 * 0
nan
>>> -1e400 * 0
nan
>>> -1e400
-inf
這些是數字1 * 10 ^ 400的規范表示。默認情況下,名稱inf
和nan
在語法中不存在,但如果它們在表示中那么為什么不是inf
和nan
關鍵字?
我不是在問為什么PEP被拒絕,因為這是基於意見的。
我的猜測是,沒有人想要不必要地混淆命名空間。
如果你想做數學,你仍然可以做:
import math
print(math.inf)
print(-math.inf)
print(math.nan)
輸出:
inf
-inf
nan
您可以使用
浮動( 'INF')
np.nan
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.