zoukankan      html  css  js  c++  java
  • (python)对象的引用

    对比下列两个例子:

    例子1:

    a=10
    b=a
    a=a+2
    print "a=",a,"b=",b
    

    结果:a= 12 b= 10 

    a+2后,b仍然是10

    例子2:

    aa=[1,2,4]
    bb=aa
    aa.append(3)
    print "aa=",aa,"bb=",bb
    

      

    结果:aa= [1, 2, 4, 3] bb= [1, 2, 4, 3]

    aa增加一个元素3后,bb也增加了元素3

    例子1和例子2为什么会出现两种不同情况呢?

    我们再用id()函数打印出变量a、b、aa、bb的内存地址:

    例子1:

    a=10
    b=a
    print id(a)
    print id(b)
    a=a+2 
    print "a=",a,"b=",b
    print id(a)
    print id(b)
    

      

    结果:

    31815632
    31815632
    a= 12 b= 10
    31815584
    31815632

    说明a、b两个变量一开始指向的是同一个内存地址。而a=a+2后,a变量便不再是之前的那个a变量,而指向了另一个内存地址。但b变量还是之前的那个a变量。

    例子2:

    aa=[1,2,4]
    bb=aa
    print id(aa)
    print id(bb)
    aa.append(3)
    print "aa=",aa,"bb=",bb
    print id(aa)
    print id(bb)
    

    结果:

    38994120
    38994120
    aa= [1, 2, 4, 3] bb= [1, 2, 4, 3]
    38994120
    38994120

    刚开始aa、bb指向的是同一个内存地址。aa.append(3)后,aa和bb仍然指向的是同一个内存地址,所以aa增加一个元素后,bb也跟着增加了一个元素

    
    
    
    

     

  • 相关阅读:
    sublime生成html快捷标签布局
    vue.js选项卡动态组件
    textarea内容限制字数
    60s验证等待
    vue.js显示隐藏
    CSS强制性换行
    Ultra Pull To Refresh下拉刷新
    Open经验库网址
    Fresco实例
    解决LinearLayout中控件不能居右对齐
  • 原文地址:https://www.cnblogs.com/Lival/p/6200449.html
Copyright © 2011-2022 走看看