美文网首页
Python中关于++和—(自增和自减)的理解

Python中关于++和—(自增和自减)的理解

作者: 潘高PG | 来源:发表于2019-04-15 14:32 被阅读0次

    首先要知道的是,Python 中是没有 ++-- 的。那么要实现自增和自减的话,可以使用如下操作:

    a = a + 1
    或
    a += 1
    

    原因分析

    我们知道, python中的数字类型是不可变数据。也就是数字类型数据在 内存 中是不会发生改变,当变量值发生改变时,会新申请一块内存赋值为新值,然后将变量指向新的内存地址。
    实验如下:

    >>> a = 10
    >>> id(a)
    140530470127960
    >>> a += 1
    >>> id(a)
    140530470129080
    

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

    += 是改变变量,相当于重新生成一个变量,把操作后的结果赋予这个新生成的变量。
    ++ 是改变了对象本身,而不是变量本身,即改变数据地址所指向的内存中的内容。

    既然 Python 中的数字类型是不可变的,那何来的“自增”这么一说呢?

    另外:

    int 理论上是每次赋值都创建一个新对象的。但是由于使用频繁,为了提升性能避免浪费,所有 python 有个 整数池,默认 [-5, 256] 的数字都属于这个整数池,这些每次赋值的时候,是取得池中的整数对象。但是其他的除外,如下:

    >>> a = 5
    >>> b = 5
    >>> id(a)
    140530470128360
    >>> id(b)
    140530470128360
    >>> a is b
    True
    
    >>> c = 257
    >>> d = 257
    >>> id(c)
    140530470136432
    >>> id(d)
    140530470136408
    

    但:

    有时候在 Python 中看到存在 ++i 这种形式,这其实不是自增,只是简单的表示正负数的正号而已。正正得正,负负得正,所以 ++i--i 都是 i


    相关文章

      网友评论

          本文标题:Python中关于++和—(自增和自减)的理解

          本文链接:https://www.haomeiwen.com/subject/epuuwqtx.html