变量高级

知识点

备注:变量、数据均保存在内存中,函数的参数传递、返回值都是靠引用传递的

引用

1
2
3
4
# 在python中,变量和数据是分开保存的
# 数据保存在内存中的一个位置,可以用id(变量名)查询到
# 变量保存着数据在内存中的地址,这就叫做引用
# 当对一个已存在的变量进行赋值时,本质上只是修改了该变量名对数据的引用

可变、不可变类型

1
2
3
4
5
6
# 可变类型:列表、字典
# 不可变类型:数字类型、字符串、元组
# 字典的key:必须是不可变类型(数字类型、字符串、元组)

# 可变意味着可以修改内存中数据的内容,而数字、字符串、元组无法修改。
# 而列表、字典即使定义以后,依然可以修改其内存中存储的数据内容

科普:

  1. python中,创建字典内容的数据时,会首先对键值对的key进行hash,以决定如何在内存中保存字典中的数据,便于后期的数据修改
  2. hash:是python中内置的一个函数(hash(变量值)),允许接受一个不可变类型作为参数,然后返回一个整数(提取的数据的特征码)。通过hash得到的结果,如果是相同的输入,则得到相同的输出,反之得到不同的结果

作业

  1. (问答)python中,变量的存储方式有何特点?
  2. (问答)python中,参数的传递、函数的返回值运作有何特点
  3. (问答)python中,如果对一个已经存在的参数进行赋值,其本质是修改了什么
  4. (问答)如何查询一个变量数据存储的内存地址
  5. (问答)我们所说的可变类型、不可变类型是如何区分的
  6. (问答)可变类型包括哪些,不可变类型包括哪些
  7. (问答)为什么字典的key值只能使用不可变类型的数据