分页: 1 / 1

这是python的bug吗?

发表于 : 2014-06-05 19:22
drongh

代码: 全选

theSum = 0
for number in range(1,101):
    theSum += number

print 'Sum is : ', theSum

不知道这是不是bug,上面程序里的这一部居然可以写成下面形式,而没有报警。

代码: 全选

theSum =+ number
两个输出结果是不一样的,一个100,一个5050.

Re: 这是python的bug吗?

发表于 : 2014-06-05 19:38
raptorsun
+= 呼叫 __iadd__方法, theSum += number 相当于 theSum.__iadd__(number), 这个操作是inplace的, 呼叫前后theSum 的 reference不变, 也就是id(theSum)返回值不变

=+ 呼叫两个函数: operator = 和 pos , theSum =+ number相当于 theSum = pos(number ) 呼叫前后 theSum的reference改变, theSum从对原来对象的reference, 变为对pos()函数返回值的一个reference

更多参见https://docs.python.org/2/library/opera ... -functions

希望对你有帮助

Re: 这是python的bug吗?

发表于 : 2014-06-06 9:49
susbarbatus
就是 theSum = +number …