最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python中数字是不可变类型吗

    正文概述    2020-06-20   236

    python中数字是不可变类型吗

    本文以Python3为例,包括六种数据类型:

    1、数字(Number):
            int整型
            long长整型
            float浮点数
            complex复数
            布尔值(0和1)
    2、字符串(String)
    3、列表(List)
    4、元组(Tuple)
    5、字典(Dictionary)
    6、集合(Set)

    通过id函数查看变量i的内存地址进行验证(使用hex(id(i)) 可以查看16进制的内存地址)

    不可变类型:Number、String、Tuple

    对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引

    用原有对象的话(即引用计数为0),原有对象就会被回收)。

    对于不可变类型int,无论创建多少个不可变类型,只要值相同,都指向同个内存地址。

    例如Number:

    >>> number1 = 123
    >>> id(number1)
    8790928028112
    >>> number2 = 123
    >>> id(number2)
    8790928028112
    >>> number3 = 321
    >>> id(number3)
    49143760
    >>>

    可以看到执行 i += 1 时,内存地址都会变化,因为int 类型是不可变的。

    >>> i = 5
    >>> id(i)
    8791205700368
    >>> i += 1
    >>> id(i)
    8791205700400
    >>>
    >>> j = i
    >>> id(j)
    8791205700400
    >>> j
    6
    >>>

    可变类型:List、Dictionary、Set

        对可变数据类型重新赋值,并没有创建新的对象。

    例如List:

    >>> list1 = [1,2,3,4,5]
    >>> id(list1)
    49307976
    >>> list2 = [1,2,3,4,5]
    >>> id(list2)
    49307784
    >>> list1.append(123)
    >>> list1
    [1, 2, 3, 4, 5, 123]
    >>> id(list1)
    49307976
    >>>

    如果执行list1=list2,因为list1、list2指向同个内存地址,而list1、list2的类型都是List,可变类型,对list1、list2任意一个List进行修改,都会影响另外一个List的值。

    >>> list1
    [1, 2, 3, 4, 5, 123]
    >>> id(list1)
    49307976
    >>>
    >>> list1 = list2
    >>> id(list1)
    49307784
    >>> id(list2)
    49307784
    >>> list2
    [1, 2, 3, 4, 5]
    >>> list2.append(456)
    >>> list1
    [1, 2, 3, 4, 5, 456]
    >>> list2
    [1, 2, 3, 4, 5, 456]
    >>>

    总而言之:

    不可变类型是指向值(Value),值不变,则对象不变;值变,则对象变。

    可变数据类型是指向名字(Name),名不变,则对象不变;名变,则对象变。

    推荐学习《Python教程》!


    起源地下载网 » python中数字是不可变类型吗

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元