can不一样了。通常,这个编程函数及其变量可以如果你把它设置成一样的,就不会让她变得一样。在程序转移的过程中,不会分辨是函数还是变量,会导致程序崩溃。所以如果定义的时候变量名和函数是一样的,这个时候可能会提示你。
在普通变量中,比如a100,ba,然后给a赋值,b的值不随a而变..
但是,在列表变量中,比如l1[1,2,3]和l2l1,l1被修改后,l2的值会随着l1而变化!
这是为什么呢?在计算机底层,普通变量和列表变量有什么区别?
变量之间是有值传递的,ba相当于把a的值赋给b,a和b是两个不同的变量,所以改变a的值不会影响b。
如果一个变量存储一个序列,它实际上存储的是该序列的内存地址,l2l1将l1的值赋给l2。但是,因为l1存储序列的地址,所以它也是传递给l2的序列的地址。这时候两个变量同时存储的是同一个序列,在操作序列的时候,两个变量指向的序列,也就是同一个序列,就会发生变化。
python中有两种类型的变量:可变的和不可变的。变量,比如整数类型,有不可变的值。诸如
第100页
100是不可变的。p里面放的是100本身。而列表变量的内容是可变的,例如
l[1,2,3]
它的内容是可以改变的,比如l[1]4。存储在l中的是对值的引用。值的引用类似于房间号,通过它可以操纵值。当一个列表变量被赋值给另一个列表变量时,引用被赋值。此时两个列表变量中的引用是相同的,所以看起来是另一个变量的值随着一个变量的操作而变化。而把一个普通变量赋给另一个变量,可以等价于把一个值赋给另一个变量,比如上面的p,如果执行下面的操作。
qp
现在q的值也是100。如果此时操作p
第200页
改变的是p中的值,现在是200。值100本身没有变化,所以q中的值保持不变。
如果可以获得l的参考值,请执行以下操作。
导入副本
男(女)
如果l中有一个列表,比如
l[1,[8,9],5]
你必须使用
男(女)
字典变量也是可变的。