zoukankan      html  css  js  c++  java
  • python的可变变量和不可变变量

    可变类型和不可变类型的区别
    1、可变类型,值可以改变:
    list列表
    dict字典
    可变类型,添加或者修改数据时,变量对应的内存地址不会改变。也就是可变类型,一直在引用原来的内存地址。
    注意,如果是重新赋值,内存地址就会发生改变。
    而del 变量名 则只是删除一个指针,不删除变量。


    2、不可变类型,值不可以改变:
    数值类型int、long、bool、float
    字符串str
    元组tuple
    不可变类型,一旦被重新赋值,变量对应的内存地址就会发生改变。


    提示:
    1. 不可变类型的数据作为实参传递, 修改形参不影响实参
    2. 可变类型的数据作为实参传递, 修改形参会导致实参跟着变化。但是形参赋值不会改变实参。

    代码示例:

    def selfAdd(a):
        '''
        自己增加
        '''
        a += a # 运算符改变参数的值
        # a = a + a # 赋值改变参数的值。形参赋值,不会改变可变类型的实参。
    
    if __name__ == '__main__':
        print("不可变类型")
        a_int=1
        print(a_int)
        selfAdd(a_int)
        print(a_int)
    
        print("可变类型")
        a_list=[1,2]
        print(a_list)
        selfAdd(a_list)
        print(a_list)
    

      

    输出:

    不可变类型
    1
    1
    可变类型
    [1, 2]
    [1, 2, 1, 2]

    延伸:
    1 、id()
    查看变量的内存地址。
    id(c)
    2 、引用计数
    一个变量值,有多少个变量名绑定在上面,引用计数就为几。
    import sys
    sys.getrefcount(a) #该命令本身也算一个引用。所以引用数会多1个
    512以内的数字,不适用。

  • 相关阅读:
    sock文件
    Django---数据迁移
    Linux磁盘占满 no space left on device
    Linux关闭防火墙命令
    linux系统搭建zookeeper集群
    Linux下安装zookeeper-3.4.13
    CentOS7.5安装JDK1.8
    CentOS下搭建NFS服务器总结
    NFS客户端挂载目录后无写入权限的解决方案
    centos关机与重启命令
  • 原文地址:https://www.cnblogs.com/andy9468/p/13021987.html
Copyright © 2011-2022 走看看