python"自增"了解一下

许多语言里都有自增,像++i就是将i的值增加1。
写Python的时习惯性地用了自增运算,结果发现程序中的++i并没有增加1。怎么回事呢?python中的++i到底是什么意思?

原来python中的数字类型是不可变数据。意思说的是数字类型数据在【内存】中是不会发生改变,当变量值发生改变时,会新申请一块内存赋值为新值,然后将变量指向新的内存地址

>>> a = 10
>>> id(a)
140698656902112
>>> a = a+1
>>> id(a)
140698656902144

可以看到当a的值发生改变时,a指向的内存地址也发生了改变。而在C语言中,a指向的内存地址并不会发生改变,而是改变内存的内容。

从这里就可以理解为什么”自增”为什么在python中不存在。++代表改变了对象本身,而python中数字类型是不可变,既然不可变又何来自增?这更像是一个设计哲学的问题,而不是一个技术问题~

那么++i到底是什么?这两个+实际是表示数据正负的正号~而不是其他语言中的自增。

令人惊奇的是,对于使用频繁的数字,为了节省内存,python中有个叫整数池的东西,据我在python3.5.4上测试,整数池包括-5~256。意思是程序中,任意一个值在[-5, 256]范围的变量,它们都指向了同一内存地址。

>>>a = -5
>>>b = -5
>>>a is b
>>>True

>>>a = 256
>>>b = -256
>>>a is b
>>>True

猜你喜欢

转载自blog.csdn.net/guojunxiu/article/details/79936423