更多课程 选择中心


Python培训

400-111-8989

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

  • 发布:Python培训
  • 来源:Python3X
  • 时间:2019-07-29 15:42

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

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

通过上述代码,可能比较容易理解,再执行完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。对其进行修改时,并不会像可变对象那样重新复制一份。而是在原有的基础上进行修改。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:两个Python实战小游戏
下一篇:Python中布尔表达式练习

Python IDE推荐7个你可能会错过的Python IDE

Python面试题之Python中爬虫框架或模块的区别

2021年Python面试题及答案汇总详解

python数据分析,你需要这些工具

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省