• 可变数据类型&不可变数据类型


    不同的变量在内存中有不同的存储空间,每个存储空间都有一个ID

    >>> a = 32
    >>> id(a)   # 查看ID
    1571185856
    >>> b = a
    >>> id(b)
    1571185856

      声明一个变量a,再把a的值赋值给b,得到a,b两个变量,但是ID相同,即指向同一个内存地址,就像以前的人起名字,名、字、号。

      那么对b重新赋值呢

    >>> b = 33
    >>> id(b)
    1571185888
    >>> id(a)
    1571185856

      a还是原来的ID,但是b变了。他把名字改了,但是另外一个人恰好又起了这个名字。这两个名字指的就是两个人了。

      下面进入正题,什么是可变数据类型呢?变量的值改变但是ID不变,反之则是不可变数据类型

      可变数据类型:列表、字典、集合

    >>> name_list = ['alex', 'mary']
    >>> id(name_list)
    2463315069192
    >>> name_list[0] = ['eric']
    >>> id(name_list)
    2463315069192
    >>> name_list.append('jake')
    >>> name_list
    [['eric'], 'mary', 'jake']
    >>> id(name_list)
    2463315069192
    列表
    >>> person = {'name': 'alex', 'age': 24}
    >>> id(person)
    2463314404192
    >>> person['gender'] = 0
    >>> person
    {'name': 'alex', 'age': 24, 'gender': 0}
    >>> id(person)
    2463314404192
    字典

      不可变数据类型是不可修改的,硬要改的话只能是重新赋值。

    >>> name = 'jake'
    >>> id(name)
    2463315000432
    >>> name.replace('e', 'ie')
    'jakie'
    >>> id(name)
    2463315000432  # id没变
    >>> name
    'jake'  
    >>> name = name.replace('e', 'ie')
    >>> id(name)
    2463314429184  #重新赋值,ID变化,name也变
    >>> name
    'jakie'  
    字符串

      元组和列表类似,有索引,如果像改列表一样尝试修改元组的话直接报错

    >>> name_tuple = ('alex', 'maria')
    >>> id(name_tuple)
    2463314574664
    >>> name_tuple[0]
    'alex'
    >>> name_tuple[0] = 'a'
    Traceback (most recent call last):
      File "<pyshell#39>", line 1, in <module>
        name_tuple[0] = 'a'
    TypeError: 'tuple' object does not support item assignment
    元组

    hash:不可变数据类型才能被hash

  • 相关阅读:
    PHP基础介绍
    day96
    day95
    day94
    day93
    day93之微信推送
    22个必须知道的css技巧
    利用Js或Css滤镜实现IE6中PNG图片半透明效果 IE6PNG妥妥的
    dedecms调用日期格式化形式大全
    innerHTML动态添加html代码和脚本兼容性问题处理方法
  • 原文地址:https://www.cnblogs.com/webc/p/8911491.html
Copyright © 2020-2023  润新知