在Python中,如何在脚本中使用decimal模块而不是解释器?
from decimal import *
print Decimal('1.2')+Decimal('2.3')
我在用 Python 2.5.4,想使用 decimal 这个模块。在命令行里用的时候没问题。比如,这段代码可以正常运行:
>>> from decimal import *
>>> Decimal('1.2')+ Decimal('2.3')
Decimal("3.5")
但是,当我把下面的代码放到一个单独的文件里(叫做 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'
这是怎么回事呢?
2 个回答
14
在我使用的Python 2.5.2版本中,这样做是没问题的。
from decimal import *
print Decimal('1.2')+Decimal('2.3')
我建议你明确一下你想从decimal模块中使用什么。
from decimal import Decimal
print Decimal('1.2')+Decimal('2.3')
在你另一个例子中,你应该使用
import decimal
print decimal.Decimal('1.2')+decimal.Decimal('2.3')
21
你把你的脚本命名为 decimal.py,因为这个脚本所在的文件夹在查找模块时是第一个被查看的,所以你的脚本会被找到并导入。但是在你的模块里没有任何叫 Decimal 的东西,这就导致了这个错误。
要解决这个问题,只需要简单地重命名你的脚本。如果你只是随便玩玩,像 foo.py、bar.py、baz.py、spam.py 或 eggs.py 这样的名字都挺合适的。