【问题标题】:Python decimal and import: How to use ROUND_UP without 'import *'?Python十进制和导入:如何在没有'import *'的情况下使用ROUND_UP?
【发布时间】:2015-03-25 11:09:32
【问题描述】:

当我开始学习 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 行,在 print "UPDATE: Price is %s" % (decimal.Decimal(4233/3600).quantize(decimal.Decimal('.000001'), round=ROUND_UP)) NameError: name 'ROUND_UP' is not defined

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

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    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")

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        相关资源
        最近更新 更多