python中变量的引用、可变和不可变类型、局部变量和全局变量

Python040

python中变量的引用、可变和不可变类型、局部变量和全局变量,第1张

变量的引用

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

变量和数据是分开存储的

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

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

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

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

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

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

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

可变和不可变类型

不可变类型,内存中的数据不允许被修改:数字类型(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只是定义了一个同名的局部变量

函数的多个返回值

(1)局部变量 是在 函数内部定义的变量,只能在函数内部使用

(2)函数执行结束后,函数内部的局部变量,会被系统回收

(3)不同的函数,可以定义相同的名字的局部变量,不会互相影响

示例:

结果:

所谓生命周期就是变量从被创建到被系统回收的过程

(1)局部变量在函数执行时才会被创建

(2)函数执行结束后,局部变量被系统回收

(3)局部变量在生命周期内,可以用来存储函数内部临时使用到的数据

示例:

结果:

示例:

结果:

示例:

结果:

(1)为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:全局变量名前加上gl_或者g_的前缀,但不同公司可能不一致;

(2)建议全局变量的命名与局部变量的规则区分开;