Python十进制和导入:如何使用没有'import *'的ROUND_UP?

时间:2013-11-30 03:23:07

标签: python python-2.7

当我开始学习Python时,Idiomatic Python style guide强烈建议永远不要使用from module import *,说明这是一个坏习惯。

我正在尝试使用十进制包来舍入数字。如何在不使用“十进制导入*”的情况下对数字进行舍入?即使小数的documentation也使用“来自十进制导入*”!

我尝试了以下内容:

#!/usr/bin/python
import sys
import decimal

print "UPDATE: Price is %s" % (decimal.Decimal(4233/3600).quantize(decimal.Decimal('.000001'), round=ROUND_UP))

不幸的是,我收到以下错误:

  

Traceback(最近一次调用最后一次):文件   “./calculate_hourly_stats.py”,第4行,in       print“UPDATE:Price is%s”%(decimal.Decimal(4233/3600).quantize(decimal.Decimal('。000001'),   round = ROUND_UP))NameError:名称'ROUND_UP'未定义

在decimal.py中,ROUND_UP是常量。如何从十进制导入常量?

2 个答案:

答案 0 :(得分:2)

此处decimal模块没有什么特别之处 - ROUND_UP只是其中的另一个名称,与Decimal相同。所以你可以说decimal.ROUND_UP。或

from decimal import ROUND_UP

然后使用普通ROUND_UP

顺便说一下,在使用decimal的程序中,文档中的其他内容是常见做法:

from decimal import Decimal as D

然后你可以写,例如D(“1.23”)而不是decimal.Decimal("1.23")

答案 1 :(得分:1)

由于您已导入decimal,因此请将常量称为decimal.ROUND_UP

from decimal import ROUND_UP也没有错。样式指南警告不要盲目导入所有内容,而不是导入特定名称。