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

15 投票
2 回答
35852 浏览
提问于 2025-04-16 00:28
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 这样的名字都挺合适的。

撰写回答