zoukankan      html  css  js  c++  java
  • 一点困惑和思考

    在学习c++中,a+=b,那么就同等于a=a+b

    但是在python中是否如此呢。

    所以就有了

    a=[100]
    a=a+a
    #此时a=[100,100],但不妨思考一下,地址还是最开始a的地址吗
    

     于是有了我尝试的以下代码

     1 a=[100]
     2 print(id(a))
     3 
     4 a=a+a
     5 print(id(a))
     6 
     7 b=[100]
     8 print(id(b))
     9 
    10 b+=[100]
    11 print(id(b))

    然而得到的结果却是

    3071558316
    3071558444
    3071558316
    3071558316

    很有趣的结果不是吗,

    事实上,在python中,a=1,等于号的意思应该是,在一个内存中,寻找一个内容为1的地址,然后把这个地址的引用给了a(假如没有的话,就new一个喽),但是如果有了,那么直接把引用交给这个变量就行了。

    于是我又尝试了以下代码

     1 a=1
     2 print(id(a))
     3 b=1
     4 print(id(b))
     5 c=1
     6 print(id(c))
     7 d=1
     8 print(id(d))
     9 f=1
    10 print(id(f))

    结果为

    139424192
    139424192
    139424192
    139424192
    139424192

    所以在python中,变量名似乎更加像一个个标签,想贴哪贴哪,一个个内存,就是被贴的目标

  • 相关阅读:
    LOJ3160 「NOI2019」斗主地
    常系数齐次线性递推
    最小树形图——朱刘算法学习小记
    Linux系统分区(一)
    Linux系统启动过程(二)
    Linux系统目录结构(三)
    cross_val_score
    sklearn.pipeline.Pileline
    DBSCAN密度聚类算法
    特征选择
  • 原文地址:https://www.cnblogs.com/zimudao/p/7822255.html
Copyright © 2011-2022 走看看