来几个例题先把.
1.
class Student:
def __init__(self,name,age):
self.name = name
self.age = age
age[20,21,22]
student = Student("李小璐",age)
age[0] = 18
print(student.age) ================>[18,21,22]
2.
class Student:
def __init__(self,name,age):
self.name = name
self.age = age
age[20,21,22]
student = Student("李小璐",age[0])
age[0] = 19
print(student.age) ==========>20
为啥会出现这种情况呢?只知道列表是可变的,那从内存中怎么解释的呢?来看图
第一题,传的是整个列表,所以函数得到的是这个列表的地址,当你执行age[0] = 18,内存中的理解,是让age[0]本存放数据20的内存地址,换成存储数据18的内存地址.没有换列表.因此可以看到列表的数据的改变.
第二题,是将age[0]的地址,也就是数据20的地址传进去.因此当你执行age[0] = 19,只是让age[0]存放数据19的地址.若看列表,可以看到数据的修改.