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仍指向原地址 

原文地址:https://www.cnblogs.com/tttzqf/p/12563612.html