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