python3函数的可变类型与不可变类型-可变参数与不可变参数

Python3 的六个标准数据类型中:

  • 不可变数据(四个):Number(数字)、String(字符串)、Tuple(元组)、Sets(集合);
  • 可变数据(两个):List(列表)、Dictionary(字典)。

不可变数据减少了重复数据的内存消耗,但同时重新赋值时,需要重新开辟内存空间。

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是可变参数,如图:

猜你喜欢

转载自blog.csdn.net/u012308586/article/details/107690223