Pycharm(六):可变与不可变类型

一、引用

在java中既有值传递,也有引用传递,我们思考一下在python中值的传递方式是哪种类型呢?

答案是引用传递

概述:

        Python中存储变量是需要占用内存空间的,为了更好地管理这些空间,每块空间都是有自己的地址值的。

格式:

        id(变量名/值)           可以查看变量/值在内存中的地址。

细节:

        Python中的 = 是引用传递,即:把等号右边的变量(值)地址值赋给  左边的变量。

记忆:

        1.可变和不可变类型的划分依据:

        在不改变地址值的情况下,其元素值是否可以发生改变;如果可以发生改变就是可变类型,不可以发生改变就是不可变类型。

        2.可变和不可变类型的具体划分如下:

        可变类型:列表,字典,集合;

        不可变类型:整型,浮点型,布尔类型,字符串类型,元组类型。

示例1.观察如下代码中在内存中有几个10

# 需求1: 观察如下的代码, 分析: 内存中到底有几个10.
a = 10
b = a
c = a

print(a, b, c)  # 10, 10, 10

# 观察 a, b, c的地址值.
print(id(a))    # 140726997170904
print(id(b))    # 140726997170904
print(id(c))    # 140726997170904
print('-' * 30)

 运行结果:

根据结果,我们可以分析得出a,b,c三个变量都指向同一个地址,这个地址内存储的是10.

示例2.演示不可变类型修改值之后地址的变化

# 需求2: 演示 不可变类型.    整型
a = 100
print(f'变量a的内容: {a}')       # 100
print(f'变量a的地址: {id(a)}')   # 0x01, 140727005431320

# 修改变量 a 的值.
a = 200
print(f'变量a的内容: {a}')       # 200
print(f'变量a的地址: {id(a)}')   # 0x02, 140727005434520
print('-' * 30)

运行结果:

可以看出,对于不可变类型,修改值之后会地址值会发生改变,变量a原来指向100对应的地址,修改值之后,地址对应也发生改变,指向200对应的地址。

示例3.演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值