python中可变类型和不可变类型

1.python中的可变类型和不可变类型


  • python中的数据类型大致可分为6类:1.Number(数字) 2. String(字符串) 3. Tuple (元组) 4. List(列表) 5. Dictionary (字典) 6. Sets(集合) (bool布尔类型、int整型、float浮点型、complex复数等都归为Number数字类型)
    这6种数据类型中不可变类型为number、string、tuple,可变类型为:list、dict、set

  • 不可变类型:不可变类型的变量在第一次赋值声明的时候,会在内存中开辟一块空间,用来存储这个变量被赋予的值,存放这个值的内存空间就是内存中的一个地址,而这个变量存储的并不是被赋予的值而是存放这个值的内存地址,通过这个地址,变量就可以在内存中取出数据了,所谓不可变就是说,我们不能改变这个数据在内存中的值,所以当我们改变这个变量的赋值时,只是在内存中重新开辟了一块空间,将新的数据存放到新的内存地址里,而原来那个变量就不再引原数据的的内存地址,而是转换为引用新数据的内存地址了。

  • 可变数据类型:当你第一次赋值声明了一个可变数据类型的时候, 同样会在内存中开辟一个空间, 并且将你所赋的数据值放在这块内存中, 然后将这个变量指向数据所在的内存地址, 不同的是, 可变数据类型可以对内存中的数据直接进行修改, 并且不会导致变量引用地址的变化, 但是这种修改仅限于Python中的内置方法, 比如list.append(), list.remove(), dict.pop(), dict.clear()等, 如果要是进行重新赋值的操作的话, 一样会改变变量的地址指向。而且当变量重新指向了新的内存之后,之前的内存也就被自动回收了。

2.对于全局变量的修改


  • 如果全局变量是不可变类型(number、string、tuple),那么如果想要在函数中对函数变量进行修改,则需要先在函数内,声明其为global,再进行修改如果是可变类型为(list、dict、set)则可以直接修改

你可能感兴趣的:(python中可变类型和不可变类型)