Python---函数内存分配

函数内存分配 : 可变/不可变类型在传参时的区别

根据代码理解函数内存分配

1将函数代码存入内存方法区(只是存储代码,不存储代码所表示的数据):
def fun01():
a = 100

2 调用函数时在内存栈区开辟空间(栈帧):
fun01()

3当函数执行完毕后,栈帧被销毁.

def fun02(p1, p2):
4 # 改变fun02栈帧中的变量p1(没有修改传入的数据,改的是地址):
p1 = 100
5 # 改变变量p2指向的列表对象:

p2[0] = “A”
g01 = 1
g02 = [“a”]
6 # 将变量g01存储的对象地址传入函数:
fun02(g01, g02)
print(g01) # 1
print(g02[0]) # A

1\练习: 将以下功能, 封装到函数中。
定义排序函数
“”"
list01 = [3, 8, 6, 5, 2]

for r in range(len(list01) - 1):
for c in range(r + 1, len(list01)):
if list01[r] > list01[c]:
list01[r], list01[c] = list01[c], list01[r]

print(list01)
“”"
此练习中为可变类型传参,不用通过return返回值,因为可变类型传参时,改变的可变对象,函数内部可以改变原数据

def sort(list_target):
    for r in range(len(list_target) - 1):
        for c in range(r + 1, len(list_target)):
            if list_target[r] > list_target[c]:
                list_target[r], list_target[c] = list_target[c], list_target[r]
    # return list_target  # 1. 传入的是可变对象 2. 函数体改变的是可变对象

list01 = [3, 8, 6, 5, 2]

print(sort(list01))

sort(list01)
print(list01)
``
此练习中为可变类型传参,不用通过return返回值,因为可变类型传参时,改变的可变对象,函数内部可以改变原数据
  1. 不可变类型参数有:
    数值型(整数,浮点数,复数)
    布尔值bool
    None 空值
    字符串str
    元组tuple
    固定集合frozenset
    1. 可变类型参数有:
      列表 list
      字典 dict
      集合 set
    2. 传参说明:
      不可变类型的数据传参时,函数内部不会改变原数据的值。
      可变类型的数据传参时,函数内部可以改变原数据。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值