Não, o fato de todos esses módulos fornecerem a constante me diz que há alguma razão para isso?
Douglas B. Staple
3
É porque você nem sempre usa todos eles e não deseja instalar e importar um módulo apenas para obter o Pi.
Lev Levitsky
11
@LevLevitsky Acabei de começar a usar python e notei que há uma diferença entre math.exp e numpy.exp (numpy.exp pode fazer uma lista, mas math.exp quer um float). Então eu não acho que foi uma pergunta idiota ...
Douglas B. Staple
Respostas:
197
>>>import math
>>>import numpy as np
>>>import scipy
>>> math.pi == np.pi == scipy.pi
True
Portanto, não importa, todos têm o mesmo valor.
A única razão pela qual os três módulos fornecem um pivalor é que, se você estiver usando apenas um dos três módulos, poderá acessar convenientemente o pi sem precisar importar outro módulo. Eles não estão fornecendo valores diferentes para pi.
Todas as outras coisas são iguais, eu usaria math.pisimplesmente porque está na biblioteca padrão se o módulo não depender numpyou scipynão - mas, como você diz, use pi em qualquer módulo que esteja importando para começar, porque eles são todos com o mesmo valor.
mgilson
3
Se você já estiver usando o uso numpy np.pi, mas não faz sentido importar o NumPy apenas para piquando está dentro math.
asmeurer 11/08/16
42
Uma coisa a observar é que nem todas as bibliotecas usarão o mesmo significado para pi, é claro, portanto nunca é demais saber o que você está usando. Por exemplo, a representação simbólica de pi da biblioteca matemática simbólica, Sym, não é a mesma que math e numpy:
SymPy Pi não é armazenado como uma constante / float, é um objeto que contém a constante
Naib
22
o sympy's é exatamente pi, representado simbolicamente, para fazer matemática simbólica. os outros são aproximações de ponto flutuante para fazer matemática de ponto flutuante.
Respostas:
Portanto, não importa, todos têm o mesmo valor.
A única razão pela qual os três módulos fornecem um
pi
valor é que, se você estiver usando apenas um dos três módulos, poderá acessar convenientemente o pi sem precisar importar outro módulo. Eles não estão fornecendo valores diferentes para pi.fonte
math.pi
simplesmente porque está na biblioteca padrão se o módulo não dependernumpy
ouscipy
não - mas, como você diz, use pi em qualquer módulo que esteja importando para começar, porque eles são todos com o mesmo valor.np.pi
, mas não faz sentido importar o NumPy apenas parapi
quando está dentromath
.Uma coisa a observar é que nem todas as bibliotecas usarão o mesmo significado para pi, é claro, portanto nunca é demais saber o que você está usando. Por exemplo, a representação simbólica de pi da biblioteca matemática simbólica, Sym, não é a mesma que math e numpy:
fonte