#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 работают с одной и той же версией.