decimal.getcontext().copy()' 的意思是什么
import decimal # Decimals
a=decimal.getcontext().copy()
print a
a有什么用呢?
4 个回答
“a”是一个变量的名字,你也可以用其他名字代替它,比如:
import decimal # Decimals
print decimal.getcontext().copy()
如果想要去掉对这个变量的引用,可以这样做:
我假设你是个新手来回答这个问题。
“a”是一个变量。变量就像一个逻辑单元,它在计算机的内存中存储一个值或字符串等,直到程序执行完毕。举个例子,如果你想把1和2加起来得到结果,你需要在内存中创建一个叫“a”的变量,然后把1 + 2的结果赋值给“a”。
在这段代码中,你导入了一个叫做decimal的库。这个库里有一系列的操作或方法。接着,你对它进行一些操作,并把结果赋值给一个叫“a”的变量。最后,你试图把这个结果打印到控制台上。
注意:不要使用像a、b这样的变量名。这不是一个好的习惯。你应该使用一个有意义的词来命名变量。
虽然我同意这里很多其他评论的观点,但我还是想分享一些我的想法。
decimal
模块是一个用于进行任意精度数字运算的工具。这在一些科学计算中非常有用,特别是当计算结果可能出现舍入误差时。经典的例子就是计算圆周率的第9999位数字。用浮点数是无法做到这一点的。
这个decimal库使用了一个叫“上下文”的概念来决定你需要多少精度。因为你要求的精度越高,计算速度就会越慢。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
但没有其他相关代码,我的猜测也不比你的好。
虽然我之前使用过decimal模块,但这些信息在Python文档中都能轻松找到,这里就有。建议你先去那边看看,自己动手尝试解决问题……如果你能自己搞定,你会记得更久。而且你会感受到我们回答问题时那种愉快的感觉。