簡體   English   中英

為什么Python中沒有Inf,-Inf和NaN關鍵字?

[英]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的規范表示。默認情況下,名稱infnan在語法中不存在,但如果它們在表示中那么為什么不是infnan關鍵字?

我不是在問為什么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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM