自学整理记录,大神见笑
变量的进阶
- 变量和数据都是保存在内存当中
- Python中的函数的参数传递以及返回值都是靠引用传递的
引用
- 变量和数据是分开保存的,数据存储在内存中的一个位置,变量记录的是数据在内存中的地址值,变量记录数据的地址值,叫做引用
- 注:使用id()函数可以查看变量的引用
- 函数调用传的实参实际上是传的是变量的引用,即内存中的地址值
可变和不可变类型
-
不可变类型,内存中的数据不允许被修改
1.数字型int,bool,float,complex,long(2.x)
2.字符型str
3.元组tuple -
可变类型,内存中的数据可以被修改
1.列表list
2.字典dict -
可变类型的数据修改是通过方法来实现的,比如append,extend,pop,clear,remove等,这样并不会修改其引用
-
如果给一个可变类型的变量,赋值一个新的数据,那么其引用会被修改
-
字典中的key只能是不可变类型的变量
哈希(hash)
- Python中内置一个叫hash的函数,它接收一个不可变类型的数据做参数,然后返回一个整数
- 哈希是一种算法,其作用是提取数据的特征码,特征码唯一;这个算法的特点是相同的内容得到相同的结果,不同的内容得到不同的结果
- 设置字典的键值对时,系统会首先对key进行hash函数的算法,然后决定符合在内存中保存字典的数据,这是为了后续对字典的增删改查操作
1.字典的key必须不可变类型
2.字典的value可以任意类型
局部变量和全局变量
- 局部变量是函数内部定义的变量,只能在函数内部使用
- 全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
- 注意:大多不推荐使用全局变量,可变范围太大,不易维护
局部变量
- 函数执行后,局部变量会被系统回收
- 不同的函数可以定义同名的局部变量,相互不影响
- 作用是在函数内部临时保存数据
全局变量
- 全局变量是函数外定义的,所有函数均可使用
- 如果函数内部定义了与全局变量同名的局部变量,则就近原则,使用局部变量
- 如果需要在函数内部修改全局变量的值,则在变量之前用关键字global声明一下变量即可
- 全局变量命名可用g_或gl_前缀,以区分局部同名变量
网友评论