加号在Python中的变量前面做了什么?

Ant*_*off 16 python decimal unary-operator

在我必须维护的项目中有以下一些Python代码:

# If the `factor` decimal is given, compute new price and a delta
factor = +factor.quantize(TWOPLACES)
new_price = +Decimal(old_price * factor).quantize(TWOPLACES)
delta = new_price - old_price
Run Code Online (Sandbox Code Playgroud)

这里的问题是+变量前面的目的.

Python文档调用一元加运算,其"产生的数值参数不变".它可以安全地移除吗?

(顺便提一下,代码是我前一段时间编写的,希望我已经吸取了教训 - 如果测试存在,或者如果在评论中澄清使用小数一元加上,那么这不是一个问题.)

kin*_*all 18

加号的作用取决于该表达式的结果所定义的内容(该对象的__pos__()方法被调用).在这种情况下,它是一个Decimal对象,而一元加号相当于调用该plus()方法.基本上,它用于应用当前上下文(精度,舍入等)而不更改数字的符号.在其他地方寻找setcontext()localcontext()调用以查看上下文是什么.有关更多信息,请参阅此处.

一元加号不经常使用,所以这种用法不熟悉也就不足为奇了.我认为该decimal模块是唯一使用它的标准模块.