什么是'decimal.getcontext()。copy()'的意思

时间:2010-01-04 06:21:18

标签: python

import decimal                               # Decimals
a=decimal.getcontext().copy()
print a

有用的是什么。

4 个答案:

答案 0 :(得分:7)

我正在回答假设一个新手。

“a”是一个变量。变量是一个逻辑单元,在执行程序时将值/字符串等保留在计算机的内存中。作为一个例子,如果你要添加1和2并得到答案,你应该在内存中创建一个“变量”说“a”并为“a”分配值1 + 2

在此代码中,您导入了一个名为decimal的库。它包含一组操作或方法。然后对它执行一些操作并将输出分配给名为“a”的变量。然后你试图将它打印到控制台。

N.B:你不应该使用像a,b那样的变量名。这不是一个好习惯。你应该使用一个有意义的词。

答案 1 :(得分:4)

虽然我同意这里的许多其他评论,但我认为我会抛出一块骨头。

decimal模块是一个用于对任意精度数进行算术运算的实用程序。这在某些科学背景下用于对遭受舍入误差的事物进行计算。经典的例子是对第9999个数字进行计算。你不能用花车那样做。

十进制库使用“上下文”的概念来决定您真正想要的精度。由于您想要的精度越高,计算运行的速度就越慢。 decimal.getcontext()部分返回默认上下文。但是通过一个疯狂的“陷阱”(我实际上已经成为牺牲品),这实际上只是一个指针。因此,如果您要使用decimal.setcontext('foo')更改上下文,您实际上也会更改a。该模块有一个.copy()方法。

原始程序员可能这样做是为了保存上下文的副本供以后使用。也许他/她想以较低的精度执行一部分计算以节省时间,然后想要以更高的精度执行难度部分。

虽然在python> 2.5最好使用像'with'

这样的上下文管理器
from decimal import localcontext

with localcontext() as ctx:
    ctx.prec -= 5   # Perform a low precision calculation
    s = calculate_something()
s = +s  # Round the final result back to the default precision

但是如果没有其他相关代码,我的猜测并不比你的好。

虽然我已经使用了十进制模块,但在python docs here中很容易找到所有这些。试着去那里先找一下这样的问题...如果你能弄清楚自己,你会记得更久。当我们回答问题时,你会感受到我们其他人所感受到的那种温暖的感觉。

答案 2 :(得分:3)

a是变量的名称,你可以轻松放入

import decimal                               # Decimals
print decimal.getcontext().copy()

删除对a

的引用

答案 3 :(得分:1)

我认为答案是在这种特殊情况下,a没有用处

然而,在更大的方案中,如果你需要使用

的值
a=decimal.getcontext().copy()

再次,那么你不想重新计算它,因为这个功能可能会改变,也可能是一个昂贵的操作。