浅析python中的可变类型和不可变类型

数据类型

  • 可变类型对象:列表(list),字典(dict)
  • 不可变类型对象:数字(int,bool,float、、、),字符串(string),元组(tuple)

意义

可变与不可变指的是,在对对象本身进行操作时,引用所指向的地址里的内容是否发生变化。
比如在函数中局部变量本身发生变化,同名的全局变量是否发生变化。

举例

  1. 可变类型-列表
    先看个实例
>>> L = [1,a,"n"]
>>> L
[1, 2, 'n']
>>> id(L)
1858646885064
>>> L += L
>>> L
[1, 2, 'n', 1, 2, 'n']
>>> id(L)
1858646885064

当列表本身发生变化时,id()未发生变化。

  1. 不可变类型-字符串
>>> str_1 = "asdf"
>>> str_1
'asdf'
>>> id(str_1)
1858646709840
>>> str_1 += str_1
>>> str_1
'asdfasdf'
>>> id(str_1)
1858646817712

当字符串发生变化时,id()也会发生变化

使用注意

在调用函数时,函数内部的局部变量名和全局变量名一致时,要注意可变类型变量的值的变化。

a = [1, 2, 3]


def test(num):
    num += num
    print(num)


test(a)
print(a)

运行结果:

[1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3]

a = [1, 2, 3]


def test(num):
    num = num + num
    print(num)


test(a)
print(a)

运行结果:

[1, 2, 3, 1, 2, 3]
[1, 2, 3]

这里再说一下“num += num”这个运算,其运算结果和“num = num +num”是一样的,但是“+=”这个操作类似于.append等,是对对象本身的一种操作,而“=”这样的操作,是类似于重新赋值的操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值