千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:北京千锋IT培训  >  技术干货  >  Python技术干货  > Python中的可变对象与不可变对象

Python中的可变对象与不可变对象

来源:千锋教育
发布人:wjy
时间: 2022-11-07 10:26:00

  首先,咱们先看两个例子。

  a = 1

  def fun(a):

  a = 2

  fun(a)

  print(a) # 1

  a = []

  def fun(a):

  a.append(1)

  fun(a)print(a) # [1]

  代码1中,a初始化值为1,执行fun()方法之后输出仍然是1

  代码2中,a初始化值为[], 执行fun()方法之后输出[1]

  所有的变量都可以看做是内容中对象的一个引用。可以通过id()方法查看对象在内存中的引用地址。

  a = 1

  print(id(a))# 261241088def

  fun(a): a = 2

  print(id(a)) # 261241104fun(a)

  print(id(a)) # 261241088

  print(a) # 1

Python中的可变对象与不可变对象

  通过上述代码,可能比较容易理解,再执行完fun()方法之后a的内存地址发生变化,而最终执行完fun()方法之后a的内存地址又和最初的一样了。

  类似这种现象,我们称a为可更改对象。

  同样的方法,测试代码2

  a = []

  print(id(a)) # 47920552

  def fun(a):

  a.append(1)

  print(id(a)) # 47920552

  fun(a)

  print(id(a))# 47920552print(a)

  # [1]

  发现执行fun()方法之后,对象a的内存地址并没有发生改变。因为执行append的方法之后只是像列表a中添加了一个元素。指针的指向并没有发生改变。

  总结:

  对象可以分为 可变对象和不可变对象

  可变对象:该对象所指向的内存中的值是可以被改变的,如:String、Tuple、Number。他们本身的值是不可以被改变,修改的时候,会复制一个新的对象,并开辟一份新的内存空间,变量再去指向新的值。

  不可变对象:该对象所指向的内存中的值是不会被改变的,如:List、Dict、Set。对其进行修改时,并不会像可变对象那样重新复制一份。而是在原有的基础上进行修改。

注:本文部分文字和图片来源于网络,如有侵权,请联系删除。版权归原作者所有!此页面下方声明无效!

 

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

10年以上业内强师集结,手把手带你蜕变精英

请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通

免费领取

今日已有369人领取成功

刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取

猜你喜欢LIKE

Python模式匹配与正则表达式

2022-11-07

python基础-面向对象编程

2022-11-07

Python程序中的注释练习

2022-11-07

最新文章NEW

Python中的可变对象与不可变对象

2022-11-14

Python中布尔表达式练习

2022-11-14

如何让python代码更高效灵活

2022-11-08

相关推荐HOT

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>