当我开始学习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是常量。如何从十进制导入常量?
答案 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
也没有错。样式指南警告不要盲目导入所有内容,而不是导入特定名称。