• python += 与=的区别


     1 a = 1
     2 print('a', a, id(a))
     3 b = a
     4 a += 1
     5 print('a', a, id(a))
     6 print('b', b, id(b))
     7 
     8 print('-' * 20)
     9 a = a + 1
    10 print('a', a, id(a))
    11 print('b', b, id(b))
    12 
    13 #输出如下:
    14 a 1 140721411760528
    15 a 2 140721411760560
    16 b 1 140721411760528
    17 --------------------
    18 a 3 140721411760592
    19 b 1 140721411760528

    如上所示,a += 1 后,a的地址改变,而b=a是指向a的原地址,当a放生改变,源地址不变,所以b的值和地址都不改变

     1 a = [1, 2]
     2 print(id(a))
     3 f = a
     4 a += [3, 4]
     5 print(id(a))
     6 print(f)
     7 
     8 print('_' * 20)
     9 b = [1, 2]
    10 print(id(b))
    11 g = b
    12 b = b + [3, 4]
    13 print(id(b))
    14 print(g)
    15 
    16 #输出如下:
    17 1534352052616
    18 1534352052616
    19 [1, 2, 3, 4]
    20 ____________________
    21 1534352053128
    22 1534352609736
    23 [1, 2]

    如上所示,我们使用列表来进行比较,会发现与之前不同:

    a与a += [3, 4]的地址相同,未发生变化,并且f的值发生变化,等于变化后的a的值,说明a原地址不变,值发生变化;

    b与b = b + [3, 4]的地址不同,说明地址发生变化,g仍指向原地址 

  • 相关阅读:
    工具
    BZOJ 1202: [HNOI2005]狡猾的商人
    BZOJ 4562: [Haoi2016]食物链
    BZOJ 1922: [Sdoi2010]大陆争霸
    BZOJ 2429: [HAOI2006]聪明的猴子
    BZOJ 1083: [SCOI2005]繁忙的都市
    BZOJ 1012: [JSOI2008]最大数maxnumber
    Luogu P1078 文化之旅
    快速读入
    [HNOI2014]道路堵塞
  • 原文地址:https://www.cnblogs.com/tttzqf/p/12563612.html
Copyright © 2020-2023  润新知