zoukankan      html  css  js  c++  java
  • Python变量类型之可变/不可变类型

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

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

    数字类型:

    #内存地址改变了,说明整形是不可变类型,浮点型也是一样

    x=10
    print(id(x))
    x=20
    print(id(x))
    #执行结果
    #140718135686256
    #140718135686576

     字符串类型:

    #内存地址改变了,说明字符串是不可变类型

    x="egon"
    print(id(x))
    x="alex"
    print(id(x))
    #执行结果
    #1644635563096
    #1644635563600

    元组类型:

    #元组是不可变类型

    >>> 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)

     列表类型:

    # 对列表的值进行改变操作时,元素值本身发生变化,但是列表的内存地址不变,所以列表是可变数据类型

    list1 = ['tom','jack','egon']
    print(id(list1))
    list1[2]="alex"
    print(list)
    print(id(list1))
    list1.append("lili")
    print(id(list1))
    # 执行结果
    # 1995513094728
    # ['tom', 'jack', 'alex']
    # 1995513094728
    # ['tom', 'jack', 'alex', 'lili']
    # 1995513094728

     字典类型:

    #对字典进行操作时,元素值改变,但是字典本身id不变,所以字典是可变数据类型

    dic = {'name':'egon','sex':'male','age':18}
    print(id(dic))
    dic["age"]=19
    print(dic)
    print(id(dic))
    # 执行结果
    # 2459917843336
    # {'name': 'egon', 'sex': 'male', 'age': 19}
    # 2459917843336

    集合类型:

    #对集合进行操作时,元素值改变,但是集合本身id不变,所以集合是可变数据类型

    data = {'tom','jack','egon'}
    print(id(data))
    data.add("alex")
    print(data)
    print(id(data))
    data.discard("tom")
    print(data)
    print(id(data))
    # 执行结果
    # 2246875583880
    # {'alex', 'jack', 'tom', 'egon'}
    # 2246875583880
    # {'alex', 'jack', 'egon'}
    # 2246875583880

    数据类型总结:

  • 相关阅读:
    宏队列与微队列
    async 与 await
    promise关键点
    promiseAPI
    promise基本使用
    JS中的错误(Error)即错误处理
    两种类型的回调函数(同步回调与异步回调)
    区别实例对象与函数对象
    在二叉树中查找指定值结点的所有祖先
    关于js点击事件出现 xx is not defined at HTMLAnchorElement.onclick 的问题
  • 原文地址:https://www.cnblogs.com/baicai37/p/12426138.html
Copyright © 2011-2022 走看看