拜师——python基础入门—第6大节课—函数: 参数的传递 传递可变对象内存分析——day26

第78课时: 函数: 参数的传递 传递可变对象内存分析



参数的传递:

参数的传递本质上是:从实参到形参的赋值操作。Python种阐述的传递都是“引用传递” 不是“值传递”

1 对可边对象进行“写操作”,直接作用对象本身。

2 对“不可边对象”进行“写操作”会产生一个新对象。

可变对象:
字典、列表、自定义对象

不可变对象:
数字、字符串、元组、function等等


传递可变对象的引用:

b=[1,2]
def f1(m):
    print(id(m))
    m.append(30)

f1(b)
print(b)
print(id(b))

2615233438280

[1, 2, 30]

2615233438280

可以看到,b这个全局变量将id地址传递给 m 这个局部变量

所以 print(id(m)) 和 print(id(b)) 的结果都是一样的

内存图解:

拜师——python基础入门—第6大节课—函数: 参数的传递 传递可变对象内存分析——day26_第1张图片

m在栈帧 内, m也同时指向b所指向的对象地址。

函数结束后,栈帧不复存在。只能通过b来调用对象。

你可能感兴趣的:(python入门)