Python3 的六个标准数据类型中:
不可变数据减少了重复数据的内存消耗,但同时重新赋值时,需要重新开辟内存空间。
a = 10
b = 20
def switch(num1,num2):
print('before num1:%s num2:%s'%(num1,num2))
num1,num2 = num2,num1
print('before num1:%s num2:%s'%(num1,num2))
switch(a,b)
调用switch函数后,a和b的值并没有发生改变,函数改变的只是内部局部变量的地址,如图:
a = 30
当对a重新赋值时,python会先创建值对象30,然后将a的地址指向30,值对象10可能变成垃圾被回收,如图:
a = [90]
def add(v_list):
v_list.append(100)
列表a调用函数add后,添加了100,此时a已经改变,因为a是可变参数,如图: