PyCharm: модуль ‘math’ не имеет атрибута ‘prod’

#pycharm #attributeerror

#pycharm #ошибка атрибута

Вопрос:

Я использую Python 3.7, и мой редактор PyCharm. Когда я вызываю prod метод из math модуля, он выдает ошибку:

 AttributeError: module 'math' has no attribute 'prod'
  

Как я могу это исправить? (Это работает для других методов, таких как floor , sqrt и т.д. Единственная проблема в том prod .)

Вот мой фрагмент кода:

 import math

numbers = [1, 2, 3, 4]

print(math.prod(numbers))
  

В общем, мой вопрос в том, почему возникает эта проблема и как я могу справиться с подобными ситуациями?

Ответ №1:

math.prod это новая функция (из Python 3.8).

Если вы хотите иметь более совместимый код, вам следует использовать старый способ:

 from functools import reduce
import operator

reduce(operator.mul, [1,2,3,4], 1)
  

Также модуль itertools часто бывает полезен (если вы посмотрите на документацию, у вас есть много примеров того, как реализовать математические операции).

Чтобы ответить на ваш общий вопрос: как обращаться с такими случаями:

Документация по Python очень хорошая. Вам следует обратиться к нему гораздо подробнее, например, если у вас есть ошибки, но также проверить, какие параметры вам нужны, и возвращаемое значение. Человеческая память ограничена, поэтому мы многое передаем в документацию, особенно проверяя особые случаи (что, если список пуст?). Итак, у меня (и у многих людей) есть этот URLhttps://docs.python.org/3/library/index.html сохранен в закладках. Примечание: Просто не доверяйте полностью документации, выполните также несколько тестов (особенно, если описание функции длинное, и есть много особых случаев: ваш особый случай может быть обработан другим переключателем «особый случай».

Ответ №2:

Из math.prod документации по Python здесь.

Новое в версии 3.8.

Чтобы исправить это, обновите свою установку Python до > = v3.8.

Ответ №3:

Попробуйте присвоить math.prod(numbers) переменной, а затем распечатать переменную. Если это не сработает, попробуйте загрузить последнюю версию python и убедитесь, что python и pycharm работают с одной и той же версией.