python不可变变量_python的可变变量和不可变变量

可变类型和不可变类型的区别

1、可变类型,值可以改变:

list列表

dict字典

可变类型,添加或者修改数据时,变量对应的内存地址不会改变。也就是可变类型,一直在引用原来的内存地址。

注意,如果是重新赋值,内存地址就会发生改变。

而del 变量名 则只是删除一个指针,不删除变量。

2、不可变类型,值不可以改变:

数值类型int、long、bool、float

字符串str

元组tuple

不可变类型,一旦被重新赋值,变量对应的内存地址就会发生改变。

提示:

1. 不可变类型的数据作为实参传递, 修改形参不影响实参

2. 可变类型的数据作为实参传递, 修改形参会导致实参跟着变化。但是形参赋值不会改变实参。

代码示例:

def selfAdd(a):

‘‘‘

自己增加

‘‘‘

a += a # 运算符改变参数的值

# a = a + a # 赋值改变参数的值。形参赋值,不会改变可变类型的实参。

if __name__ == ‘__main__‘:

print("不可变类型")

a_int=1

print(a_int)

selfAdd(a_int)

print(a_int)

print("可变类型")

a_list=[1,2]

print(a_list)

selfAdd(a_list)

print(a_list)

输出:

不可变类型

1

1

可变类型

[1, 2]

[1, 2, 1, 2]

延伸:

1 、id()

查看变量的内存地址。

id(c)

2 、引用计数

一个变量值,有多少个变量名绑定在上面,引用计数就为几。

import sys

sys.getrefcount(a) #该命令本身也算一个引用。所以引用数会多1个

512以内的数字,不适用。

原文:https://www.cnblogs.com/andy9468/p/13021987.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值