Python 中只存在 “引用传递” 这一种传递方式,
准确来说应该是指针传递 ,
通过 id()
函数可以确定,参数传入前和传入后的地址值一样
所谓的对象可变与不可变,其实是看是否提供了修改自身对象的方法
变量无类型,对象有类型
不可变 (immutable) 对象类型 (指针地址不可变)
- int
- float
- decimal
- complex
- bool
- str
- tuple
- range
- frozenset
- bytes
可变 (mutable) 对象类型
- list
- dict
- set
- bytearray
user-defined classes (unless specifically made immutable)
Python 中的对象类型分为 可变类型 和 不可变类型
例如: Python 中的数字是不可变类型
1 | a = 2 # 变量 a 指向一个 Number 对象 |
即使对于可变类型,其实也是指针传递
1 | def test(lst): |
可变类型的 "可变", 体现在下面这种情况
1 | def test(lst): |
参考文章: