Я использую Python 2.5.4 и пытаюсь использовать десятичный модуль. Когда я использую его в интерпретаторе, у меня нет проблемы. Например, это работает:
>>> from decimal import *
>>> Decimal('1.2')+ Decimal('2.3')
Decimal("3.5")
Но, когда я поместил следующий код:
from decimal import *
print Decimal('1.2')+Decimal('2.3')
в отдельном файле (названный decimal.py) и выполненный это как модуль, жалуется интерпретатор:
NameError: имя 'Десятичное число' не определяется
Я также пытался поместить этот код в отдельный файл:
import decimal
print decimal.Decimal('1.2')+decimal.Decimal('2.3')
Когда я выполняю его как модуль, интерпретатор говорит:
AttributeError: объект 'модуля' не имеет никакого атрибута 'Десятичное число'
Что продолжается?
Вы назвали свой скрипт decimal.py, поскольку каталог, в котором он находится, является первым в пути, по которому модули ищут, ваш скрипт найден и импортирован. В вашем модуле нет ничего с именем Decimal, из-за которого возникает это исключение.
Чтобы решить эту проблему, просто переименуйте скрипт, пока вы просто играете с чем-то вроде foo.py, bar.py, baz.py, spam.py или egg.py - хороший выбор для имени.
Это прекрасно работает как есть для меня на Python 2.5.2
from decimal import *
print Decimal('1.2')+Decimal('2.3')
Я бы рекомендовал вам указать, что вы хотите использовать из десятичных
from decimal import Decimal
print Decimal('1.2')+Decimal('2.3')
В вашем другом примере вы должны использовать
import decimal
print decimal.Decimal('1.2')+decimal.Decimal('2.3')