• 可变类型与不可变类型


    可变类型:值发生改变时,内存地址不变,证明在改变原值

    不可变类型:值发生改变时,内存地址也发生改变,即id也变,证明是没有在改变原值,是产生新的值

    1.数字类型

    >>> x = 10
    >>> id(x)
    1830448896 
    >>> x = 20
    >>> id(x)
    1830448928
    # 内存地址改变了,说明整型是不可变数据类型,浮点型也一样
    

    2.字符串

    >>> x = "Jy"
    >>> id(x)
    938809263920 
    >>> x = "Ricky"
    >>> id(x)
    938809264088
    # 内存地址改变了,说明字符串是不可变数据类型
    

    3.列表

    >>> list1 = ['tom','jack','egon']
    >>> id(list1)
    486316639176
    >>> list1[2] = 'kevin'
    >>> id(list1)
    486316639176
    >>> list1.append('lili')
    >>> id(list1)
    486316639176
    # 对列表的值进行操作时,值改变但内存地址不变,所以列表是可变数据类型
    

    4.元组

    >>> t1 = ("tom","jack",[1,2])
    >>> t1[0]='TOM' # 报错:TypeError
    >>> t1.append('lili') # 报错:TypeError
    # 元组内的元素无法修改,指的是元组内索引指向的内存地址不能被修改
    >>> t1 = ("tom","jack",[1,2])
    >>> id(t1[0]),id(t1[1]),id(t1[2])
    (4327403152, 4327403072, 4327422472)
    >>> t1[2][0]=111 # 如果元组中存在可变类型,是可以修改,但是修改后的内存地址不变
    >>> t1
    ('tom', 'jack', [111, 2])
    >>> id(t1[0]),id(t1[1]),id(t1[2]) # 查看id仍然不变
    (4327403152, 4327403072, 4327422472)
    

    5.字典

    >>> dic = {'name':'egon','sex':'male','age':18}
    >>> 
    >>> id(dic)
    4327423112
    >>> dic['age']=19
    >>> dic
    {'age': 19, 'sex': 'male', 'name': 'egon'}
    >>> id(dic)
    4327423112
    # 对字典进行操作时,值改变的情况下,字典的id也是不变,即字典也是可变数据类型
    

    6.数据类型总结

  • 相关阅读:
    taro 填坑之路(一)taro 项目回顾
    Redux遵循的三个原则是什么?
    解释一下 Flux
    MVC框架的主要问题是什么?
    与 ES5 相比,React 的 ES6 语法有何不同?
    你了解 Virtual DOM 吗?解释一下它的工作原理
    DOM 事件有哪些阶段?谈谈对事件代理的理解
    CSS:用Less实现栅格系统
    .NET:国际化和本地化
    自定义工作流 之 模型设计与实现
  • 原文地址:https://www.cnblogs.com/chenwenyin/p/12361314.html
Copyright © 2020-2023  润新知