)num=2print(id(num))执行change(num)后num的值还是1可以看到在执行前num的id值(可以理解为内存地址)是某一值但在执行change后,num的id值改变了,也就是说内部的num指向了另外的对象,而外部的num却还是指向原来的对象,所以值没有变;
同理,如:num_list=[1,2]defchange_list(num_list):print(id(num_list)
)num_list.append(3)print(id(num_list))可以看到执行change_list后num_list的id值没有改变,也就是说num_list是在原来的对象上添加了新的数据,外部的num_list也是指向这一对象,所以外部的num_list数据也添加了新的数据。