函数的参数传值还是传引用
python 的参数传递是什么类型的呢
python 的参数是传引用的吗
下面的代码在函数内修改了 n 的值,但是函数外,n 没有被修改,所以不是传引用的。
In [1]: def inc(n):
...: print(id(n))
...: n = n + 1
...: print(id(n))
In [2]: n = 3
In [3]: id(n)
Out[3]: 4455332976
In [4]: inc(n)
4455332976
4455333008
In [5]: n
Out[5]: 3python 的参数是传值的吗
下面的函数在函数内部列表被修改,同时外面的列表也被修改了,所以不是传值的。
python 的参数是根据参数的可变不可变来决定传值还是传引用的吗
下面的函数的入参都是一个可变的 list 结构,但是根据处理方式的不同:有的列表在函数外没有被修改,有的列表在函数外被修改了,所以 python 的参数传递问题也不是根据可变不可变对象来决定的。
python 对象
可变:mutable
不可变:immutable
基础数据类型的可变与不可变
类型
不可变
可变
备注
bool
✅
int
✅
float
✅
str
✅
tuple
✅
frozenset
✅
不可变的set
list
✅
dict
✅
set
✅
在 python 内部,所有的数据都是一个 对象(object)。
对象(object)。object 有几个函数可以操作
id(o)
返回一个 object 的唯一数字 id
在创建的时候确定,不可更改
内部实现上返回了内存地址
o is b
判断 o 和 b 两个 object 是不是同一个 object
或者说 o 和 b 两个变量是不是引用的同一个 object
type(o)
返回一个 object 的类型
object 操作
1. 将 10 赋值给 x
2. 然后将 x 赋值给 y
3. 然后将 y 加上 10
4. 将 x 设置为一个可变 object 列表
5. 将 y 设置为 x
6. y append 一个数据
7. 将一个新的列表赋值给 y
参考
Last updated
Was this helpful?