Нет, тот факт, что все эти модули предоставляют константу, говорит мне, что есть какая-то причина для этого?
Дуглас Б. Стейпл
3
Это потому, что вы не всегда используете их все, и вы не хотите устанавливать и импортировать модуль только для получения Pi.
Лев Левицкий
11
@LevLevitsky Я только начал использовать python и заметил, что между math.exp и numpy.exp есть разница (numpy.exp может взять список, но math.exp хочет использовать float). Так что я не думал, что это глупый вопрос ...
Дуглас Б. Стейпл
Ответы:
198
>>>import math
>>>import numpy as np
>>>import scipy
>>> math.pi == np.pi == scipy.pi
True
Так что не имеет значения, они все одинаковой ценности.
Единственная причина, по которой все три модуля предоставляют piзначение, заключается в том, что если вы используете только один из трех модулей, вы можете легко получить доступ к pi без необходимости импорта другого модуля. Они не предоставляют разные значения для пи.
При прочих равных условиях я бы использовал math.piпросто потому, что он находится в стандартной библиотеке, если модуль не зависит numpyили scipyнет - но, как вы говорите, используйте pi в любом модуле, который вы импортируете для начала, потому что они все одинаковое значение.
Мгилсон
3
Если вы уже используете np.piNumPy, но не имеет смысла импортировать NumPy только piтогда, когда он включен math.
asmeurer
43
Следует отметить, что не все библиотеки будут использовать одно и то же значение для pi, поэтому никогда не помешает узнать, что вы используете. Например, символическая математическая библиотека в представлении Sympy для pi отличается от математики и numpy:
Симпи Пи не хранится как константа / число с плавающей точкой, это объект, который содержит константу
Наиб
22
sympy's - это ровно пи, символически представленный для символической математики. другие - приближения с плавающей точкой для выполнения математики с плавающей точкой.
Ответы:
Так что не имеет значения, они все одинаковой ценности.
Единственная причина, по которой все три модуля предоставляют
pi
значение, заключается в том, что если вы используете только один из трех модулей, вы можете легко получить доступ к pi без необходимости импорта другого модуля. Они не предоставляют разные значения для пи.источник
math.pi
просто потому, что он находится в стандартной библиотеке, если модуль не зависитnumpy
илиscipy
нет - но, как вы говорите, используйте pi в любом модуле, который вы импортируете для начала, потому что они все одинаковое значение.np.pi
NumPy, но не имеет смысла импортировать NumPy толькоpi
тогда, когда он включенmath
.Следует отметить, что не все библиотеки будут использовать одно и то же значение для pi, поэтому никогда не помешает узнать, что вы используете. Например, символическая математическая библиотека в представлении Sympy для pi отличается от математики и numpy:
источник