留言与评论(共有 0 条评论) |
发布时间:2020-04-12 09:00:37
变量之间是值传递,b=a相当于把a的值赋给b,而a和b是两个不同的变量,所以改变a的值不会影响b
如果一个变量中保存的是一个序列,那么实际上这个变量保存的是这个序列的内存地址,l2=l1是把l1的值赋给了l2,但是因为l1保存的是序列的地址,所以传给l2的也是序列的地址,此时两个变量同时保存了同一个序列,操作序列时,两个变量指向的序列,也就是同一个序列,都会发生改变。
Python中变量分为可变与不可变两种类型。变量如整数型,其值不可变。如
P = 100
100不可变。P中放的是100本身。而列表变量其内容是可变的,如
L = [1, 2, 3]
其内容可以更改,例如L[1] = 4。L中存放的是值的引用。值的引用类似于房间号码,通过号码就可以对值进行操作。当列表变量赋值给另一个列表变量,进行的是把引用赋值。这时两个列表变量中的引用相同,所以对一个变量进行操作,看上去另一个变量的值也跟随变化。而普通变量赋值给另一个变量,可以等价于把值给了另一个变量,例如上面的P,如果进行如下操作
Q= P
现在Q也是有值100。如果此时对P操作
P= 200
改变的是P中的值,现在是200。数值100本身并没有更改,所以Q中的值不变。
如果要得到L的被引用的值也是可以的,进行如下操作
import copy
M = copy.copy(L)
如果L中还有列表,如
L= [1, [8,9], 5]
则要使用
M = copy.deepcopy(L)
字典变量也是可变的
留言与评论(共有 0 条评论) |
全站搜索