zoukankan      html  css  js  c++  java
  • 可变数据类型&不可变数据类型

    不同的变量在内存中有不同的存储空间,每个存储空间都有一个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

  • 相关阅读:
    mysql之全局查询日志
    使用MySQL Workbench进行数据库设计——MySQL Workbench使用方法总结
    HttpClient工具类
    JSON字符串转换为Map
    Java判断一个日期是否在下周日期区间
    Linux 查看日志文件
    判断一个日期是否为当前日期的前后几天的方法
    Spring-Boot 整合Dubbo 解决@Reference 注解为null情况
    spring注解之@Scope
    Swagger Annotation 详解(建议收藏)
  • 原文地址:https://www.cnblogs.com/webc/p/8911491.html
Copyright © 2011-2022 走看看