基本类型
凡是基本类型,都是赋值。
1 | a = 1 |
复合类型
若是复合类型,都是地址指向。
函数和类的赋值也是地址指向
1 | a = [1,2,3] |
验证方法
直接用id()看地址引用,如果原始对象改变后,其id()和赋值对象的id()不再一致,则为赋值,反之则是引用。
验证基本类型:
1
2
3
4
5
6
7
8
9
10
11a = 3
b = a
id(a)
9413248
id(b)
9413248
a = 4
id(a)
9413280
id(b)
9413248给a第二次更变赋值为4后,b的id()和a的id()不同,所以是赋值
验证复合类型:
1
2
3
4
5
6
7
8
9
10
11
12
13a = [1,2,3]
b = a
b
[1, 2, 3]
id(a)
140435242878376
id(b)
140435242878376
a.append(1)
id(a)
140435242878376
id(b)
140435242878376给a第二次更变赋值为4后,b的id()和a的id()相同,所以是地址引用。下面的类的例子也能看出是地址引用。
1 | class A(object): |