我必须维护项目中的以下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
这里的问题是在变量前面使用+
的目的。
Python call it一元加运算符,它“产生不变的数值参数”。那么它能被安全地移除吗?
(顺便说一句,代码是我不久前写的,希望我已经学到了这一课-如果测试存在,或者如果在注释中澄清了一元加小数的用法,这将不是问题。)
发布于 2012-05-25 11:46:59
加号做什么取决于表达式的结果定义它做什么(该对象的__pos__()
方法被调用)。在本例中,它是一个Decimal
对象,一元加号等同于调用plus()
方法。基本上,它用于应用当前上下文(精度、舍入等)。而不改变数字的符号。在其他地方查找setcontext()
或localcontext()
调用以了解上下文是什么。有关更多信息,请访问see here。
一元加号并不经常使用,所以这种用法不熟悉也就不足为奇了。我认为decimal
模块是唯一使用它的标准模块。
发布于 2016-11-18 03:41:58
当我错误地认为Python必须支持C增量(++)运算符时,我遇到了同样的问题;事实并非如此!相反,它应用加号运算符(+)两次!我很快就明白了,这两次什么也做不了。然而,因为"++n“看起来有效...未标记为语法错误...我为自己创造了一个可怕的bug。
所以除非你重新定义它的作用,否则一元+实际上什么也不做。一元-从正到负的变化,反之亦然,这就是为什么"--n“也不会被标记为语法错误,但它也不做任何事情。
https://stackoverflow.com/questions/10748185
复制相似问题