在上周的Python科学计算课上,老师讲到了Python序列的浅拷贝以及深拷贝方面的知识,个人觉得说得比较言简意赅了,对于我这个刚入Python的新手来说,也基本可以避免今后变量的赋值使用错乱的问题。

这里我们简单的将Python中的标准数据类型分为两类:

  • 不可变数据类型:int、float、string、boolean
  • 可变(组合)数据类型:列表(list)、字典(dict)、集合(set)

先举几个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = 1 # a为上述定义的不可变数据类型
b = a
print('b={}'.format(b)) # b = 1
--------
b = 2
print('a = {},b = {}'.format(a,b)) # a = 1,b = 2

========

c = [1,2,3] # b为上述定义的组合数据类型
d = c
print('c = {},d = {}'.format(c,d)) # c = [1, 2, 3],d = [1, 2, 3]
d.append(4)
print('c = {},d = {}'.format(c,d)) # c = [1, 2, 3, 4],d = [1, 2, 3, 4]

从上述的例子当中看出,在不可变数据类型中,所定义的变量的值在后来改变(这里是b),并不会引起原来赋给它值的那个量的改变(这里是a);而在组合数据类型中就发生了改变,我们只是将d的值进行了改变,并没有直接改变c的值,最后c的值却也发生了变化。