Python可变/不可变对象

搞懂可变和不可变内置对象有利于理解函数参数的副作用

  • 那些是可变对象?那些不可变?
  • 不可变对象bool/int/float/tuple/str/frozenset
  • 可变对象list/set/dict

小测试:输出什么结果?

def clear_list(l):
l = []
ll = [1,2,3]
clear_list(ll)
print(ll)   ------[1, 2, 3]

python可变参数作为默认参数。
!!!记住默认参数只计算一次

def flist(l = [1]):
l.append(1)
print(l)
flist()------[1,1]
flist()------[1, 1,1]

i = 73
i+=2
在这里插入图片描述

修改对象的值,并不会在原来的内存地址中对值进行修改,而是会在一块新的内存区域内创建新值,然后将原变量指向新地址,原内存区域内的对象也不会发生变化,也就是原来位置上还是73,他之后会被python当做垃圾进行回收,这就是不可变对象。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值