Python 使用递增和递减运算符
Python 没有一元的递增/递减运算符(++/–)。取而代之的是,要增加一个值,请使用
a += 1
要递减一个值,使用−
a -= 1
示例
>>> a = 0
>>>
>>> #Increment
>>> a +=1
>>>
>>> #Decrement
>>> a -= 1
>>>
>>> #value of a
>>> a
0
Python不提供多种方式来完成同样的事情。
然而,如果你从像C语言这样的语言过度到Python,一定要小心,Python没有C语言中那种“变量”的概念,而是使用名字和对象来表示变量,而在Python中,整数(int)是不可变的。
我们通过一个例子来理解一下:
>>> a =1
>>> print(id(a))
1919375088
>>> print(hex(id(a)))
0x726756f0
所以在Python中,上述语句的意思是:创建一个类型为int的对象,它的值为1,并将其命名为a。这个对象是一个值为1的int的实例,命名为a引用它。分配的名字a和它所引用的对象是不同的。 现在让我们增加a。
>>> a +=1
>>> print(id(a))
1919375104
>>> print(hex(id(a)))
0x72675700
由于int是不可变的,因此Python将以上语句理解为
- 查找a所引用的对象(它是一个int,id为0x726756f0)
-
查找对象0x726756f0的值(它是1)。
-
将该值加上1(1 + 1 = 2)
-
创建一个新的int对象,其值为2(对象的id是0x72675700)。
-
将名称重新绑定到此新对象(0x72675700)
-
现在,a引用对象0x72675700,之前的对象(0x726756f0)不再由名称a引用。如果没有其他名称引用原始对象,它将在稍后被垃圾回收。
因此,根据以上的解释,可以理解当我们执行: a += 1
这会将a重新赋值为 a+1 。这不是一个递增操作符,因为它不是增加a的值,而是重新赋值。
让我们通过更多的例子来理解上述递增/递减操作−
>>> a = b = c =1
>>> id(a)
1919375088
>>> id(b)
1919375088
>>> id(c)
1919375088
>>> #Above all have the same id
>>>
>>> # Now increment a
>>> a +=1
>>> id(a)
1919375104
>>> id(b)
1919375088
>>> id(c)
1919375088
从上面你可以理解,我们有一个单一对象,a、b和c都指向它(一个具有id 1919375088的int型变量)。
在增加a的值后,现在a被重新赋值为 a+1 (id: 1919375104),而其他的 b 和 c 仍指向同一个对象(1919375088)。
此外,Python并没有++/–运算符。
>>> a =1
>>> ++a
1
>>> --a
1