Nie, fakt, że wszystkie te moduły zapewniają stałą, mówi mi, że jest ku temu jakiś powód?
Douglas B. Staple
3
Dzieje się tak, ponieważ nie zawsze używasz ich wszystkich i nie chcesz instalować i importować modułu tylko po to, aby uzyskać Pi.
Lev Levitsky
11
@LevLevitsky Właśnie zacząłem używać Pythona i zauważyłem, że istnieje różnica między math.exp i numpy.exp (numpy.exp może przyjmować listę, ale math.exp chce float). Więc nie sądziłem, że to głupie pytanie ...
Douglas B. Staple
Odpowiedzi:
197
>>>import math
>>>import numpy as np
>>>import scipy
>>> math.pi == np.pi == scipy.pi
True
Więc to nie ma znaczenia, wszystkie mają tę samą wartość.
Jedynym powodem, dla którego wszystkie trzy moduły podają piwartość, jest to, że jeśli używasz tylko jednego z trzech modułów, możesz wygodnie mieć dostęp do pi bez konieczności importowania innego modułu. Nie podają różnych wartości pi.
Wszystkie inne rzeczy są równe, użyłbym math.pipo prostu dlatego, że znajduje się w standardowej bibliotece, jeśli moduł nie zależy od numpylub w scipyinny sposób - Ale jak mówisz, użyj pi w dowolnym module, który importujesz na początku, ponieważ są one wszystkie te same wartości.
mgilson
3
Jeśli już używasz numpy użyj np.pi, ale nie ma sensu importować NumPy tylko piwtedy, gdy jest dostępny math.
asmeurer
42
Należy zauważyć, że oczywiście nie wszystkie biblioteki będą używać tego samego znaczenia dla pi, więc nigdy nie zaszkodzi wiedzieć, czego używasz. Na przykład symboliczna biblioteka matematyczna reprezentacja pi przez Sympy nie jest tym samym, co matematyka i numpy:
sympy Pi nie jest przechowywana jako stała / zmiennoprzecinkowa, jest to obiekt, który zawiera stałą
Naib
22
Sympy to dokładnie pi, reprezentowane symbolicznie, do wykonywania symbolicznej matematyki. inne są przybliżeniami zmiennoprzecinkowymi do wykonywania obliczeń zmiennoprzecinkowych.
Odpowiedzi:
Więc to nie ma znaczenia, wszystkie mają tę samą wartość.
Jedynym powodem, dla którego wszystkie trzy moduły podają
pi
wartość, jest to, że jeśli używasz tylko jednego z trzech modułów, możesz wygodnie mieć dostęp do pi bez konieczności importowania innego modułu. Nie podają różnych wartości pi.źródło
math.pi
po prostu dlatego, że znajduje się w standardowej bibliotece, jeśli moduł nie zależy odnumpy
lub wscipy
inny sposób - Ale jak mówisz, użyj pi w dowolnym module, który importujesz na początku, ponieważ są one wszystkie te same wartości.np.pi
, ale nie ma sensu importować NumPy tylkopi
wtedy, gdy jest dostępnymath
.Należy zauważyć, że oczywiście nie wszystkie biblioteki będą używać tego samego znaczenia dla pi, więc nigdy nie zaszkodzi wiedzieć, czego używasz. Na przykład symboliczna biblioteka matematyczna reprezentacja pi przez Sympy nie jest tym samym, co matematyka i numpy:
źródło