Python中的增减运算符?

Python没有一元增减运算符(++ /-)。而不要浪费值,请使用

a += 1

减少值,请使用-

a -= 1

示例

>>> a = 0
>>>
>>> #Increment
>>> a +=1
>>>
>>> #Decrement
>>> a -= 1
>>>
>>> #value of a
>>> a
0

Python没有提供完成同一件事的多种方法。

但是,请注意,如果您来自像C这样的语言,Python不会像C那样具有“变量”,而是python使用名称和对象,而python中的integers(int)是不可变的。

让我们通过一个例子来理解它-

>>> a =1
>>> print(id(a))
1919375088
>>> print(hex(id(a)))
0x726756f0

因此,上面的语句在python中的含义是:创建一个值为1的int类型的对象,并为其命名a。该对象是具有值1的int实例,名称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)

  • 创建一个值为2的新int对象(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