python 的可变数据类型和不可变数据类型

Python015

python 的可变数据类型和不可变数据类型,第1张

2.可变数据类型 和 不可变数据类型 都有哪些?

可变数据类型:list(列表)、dict(字典)、set(集合,不常用)

不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组)

3.专业名词解释

可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址不发生改变,那么这个数据类型就是 可变数据类型。

不可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址发生了改变,那么这个数据类型就是 不可变数据类型。

====>总结:可变数据类型更改值后,内存地址不发生改变。不可变数据类型更改值后,内存地址发生改变。

====>总结:判断元组数据类型相对麻烦一些,因为元组数据类型类似于列表数据类型,元组内可以存储 数值类型、字符串、列表、元组,但是元组一经创建,内部的元素的值就不能修改,否则报错。但是我们可以对元组进行连接组合。在例子中可以看到,同一个变量,将两个元组的值进行连接赋值给变量,然后打印变量内存地址发生改变。所以做出判断,元组是不可变数据类型

(1)数字类型(int,float, bool,complex)

(2)字符串(str)

(3)元组(tuple)

(1)列表(list)

(2)字典(dict)

示例-不可变类型:

结果:

示例-可变类型:

结果:

示例1:

结果:

示例2:

结果:

hash(object) 返回对象的哈希值。

(1)只能接受不可变类型的数据作为参数

(2)返回的是一个整数,是数据的唯一特征码(就像人的指纹一样)

(3)在python中,设置字典键值对时,会首先对key进行hash,用来决定如何在内存中保存字典的数据,以方便后续对字典进行增删改查;

变量的引用

变量和数据都是保存在内存中的

变量和数据是分开存储的

数据保存在内存中某个位置,通过地址来标记

变量保存的是数据的地址,通过地址可以找到数据在内存空间的位置

把变量保存数据地址的过程称为引用

变量的重新赋值修改的是变量中引用数据的内存地址

变量之间的赋值实际是引用的传递

函数参数的传递,本质也是引用的传递

函数的返回值本身也是引用的传递

可变和不可变类型

不可变类型,内存中的数据不允许被修改:数字类型(int,bool,float,complex,long(2,x)、字符串、元组(tuple)

可变类型,内存中的数据可以被修改:列表list、字典dict

无论是可变还是不可变数据类型,通过赋值语句,都会改变变量的引用

Hash函数只能接收不可变数据类型,字典的键也只能是不可变数据类型,字典的value值可以是任意数据类型

局部变量

1.在函数内部定义的变量就是局部变量(作用范围只能是当前函数内部)

2.在函数外部无法直接访问局部变量

3.不同的函数中可以定义同名的局部变量

4.局部变量的生命周期:从定义变量时开始,到函数运行结束

全局变量

1.在所有函数外边定义的变量就是全局变量

2.让所有函数都能访问到,可以作为函数通信的桥梁

3.一般情况下,为了和普通变量的区别,需要加上g_或gl_前缀

4.全局变量一般放在所有函数的最上面

5.在函数内部修改全局变量,必须要加上global关键字,如果不加global只是定义了一个同名的局部变量

函数的多个返回值