В Python, как вы используете десятичный модуль в сценарии, а не интерпретатор? - PullRequest
9 голосов
/ 26 июня 2010

Я использую 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: имя 'Decimal' не определено

Я также пытался поместить этот код в отдельный файл:

import decimal
print decimal.Decimal('1.2')+decimal.Decimal('2.3') 

Когда я запускаю его как модуль, интерпретатор говорит:

AttributeError: у объекта 'module' нет атрибута 'Decimal'

Что происходит?

Ответы [ 2 ]

18 голосов
/ 26 июня 2010

Вы назвали свой скрипт decimal.py, так как каталог, в котором находится скрипт, является первым в пути поиска модулей, где ваш скрипт найден и импортирован.В вашем модуле нет ничего с именем Decimal, которое вызывает это исключение.

Чтобы решить эту проблему, просто переименуйте скрипт, если вы просто играете с чем-то вроде foo.py, bar.py, baz.py, spam.py или eggs.py - хороший выбор для имени.

4 голосов
/ 26 июня 2010

Это прекрасно работает, как и для меня на 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') 
...