python中的函数参数既支持按值调用,也支持按引用调用。
python中的变量是对象引用:变量存储的值是内存地址。当函数被调用的时候,解释器会查看传入的变量(内存地址)指的那个值的类型,如果是一个可变类型的值,就按照引用传递变量;如果是一个不可变类型的值,就考虑按照值传递变量。
- 可变类型:列表list, 字典dict,集合set
- 不可变类型:字符串string,整型int,浮点型float,元组tuple
数据类型分类
Python中的数据包括:Number(包括Int,Float,Bool和Complex),String,Tuple,List,Dict,Set。
这几种数据类型按照是否可变,有如下分类:
不可变类型:Number,String,Tuple
可变类型:List,Dict,Set
不可变类型
这些类型的数据一旦经过初始化创建成功,对应内存地址上的数据本身便不能发生任何变化
具体表现?
- 对变量连续赋予相同的值,变量所指向的内存地址不变。【与可变类型的不同之处】
- 对变量连续赋予不同的值,变量所指向的内存地址变化。【与可变类型的相同之处】
可变类型
这些类型的数据经过初始化创建成功后,对应内存地址上的数据可以发生多次局部变化。
- 对变量连续赋予相同的值,变量所指向的内存地址变化。【与不可变类型的不同之处】
- 对变量连续赋予不同的值,变量所指向的内存地址变化。【与不可变类型的相同之处】