在Python中,如何在脚本而不是解释器中使用十进制模块?

2024-04-19 15:33:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python2.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: name 'Decimal' is not defined

我还尝试将此代码放在单独的文件中:

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

当我把它作为一个模块运行时,解释器会说:

AttributeError: 'module' object has no attribute 'Decimal'

怎么了?


Tags: 模块文件代码namefrompyimportis
2条回答

这和我在Python2.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') 

您将脚本命名为decimal.py,因为脚本所在的目录是查找模块的路径中的第一个,找到并导入脚本。您的模块中没有任何名为Decimal的内容,这会导致引发此异常。

要解决这个问题,只需重命名脚本,只要您只是在foo.py、bar.py、baz.py、spam.py或eggs.py之类的地方玩,就可以很好地选择一个名称。

相关问题 更多 >