可变类型与不可变类型-Python

# python3的变量是没有类型的,也就不需要提前声明,可以存储任意类型的值,
# 需要区分类型的是被存储的数据。

# 在python3中改变变量赋值,可能会同时改变变量地址:
# 1、这种改变值就会改变变量地址的数据类型,称为不可变类型。
# 2、而改变值不会改变变量地址的数据类型,称为可变类型。
# 3、其区别在于:
  # 可变与不可变指的是修改内容后存储地址是否改变,
  # 修改可变类型的变量值(注意,是修改而不是重新赋值)时,其存储地址不会改变,
  # 因此该变量在整个作用域内的内容都会随之改变,
  # 因为存储地址相同就意味着它们是同一个变量。

# 一、不可变类型包括:
# 1、数值类型
# 2、字符串类型

# 二、可变类型包括:
# 1、列表
# 2、集合
# 3、字典
# 注意,元组根本不可修改,也就谈不上可变或不可变,但给变量赋值为其他元组时,存储地址会变。


# 案例1(不可变类型):
# 数值类型
number=1
print(id(number)) # 将number变量赋值为1,打印此时的number变量存储地址
number=2
print(id(number)) # 将number变量值更改为2,并打印变量存储地址,会发现存储地址不同
print('这是分割线-------')
# 字符串类型
string1='a'
print(id(string1))
string1='b'
print(id(string1)) # 将string1变量值更改为2,并打印变量存储地址,会发现存储地址不同
print('这是分割线-------')

# 案例2(可变类型):
# 列表类型
list1=[1,2]
print(id(list1))
list1=[1,3] # 将列表变量赋值为其他列表时,会发现存储地址不同
print(id(list1))
list1[1]=4 # 但仅改变列表元素值时,变量存储地址并未改变
print(id(list1))
print('这是分割线-------')
# 字典类型
dictionary1 = {1:"1", 2:"2"}
print(id(dictionary1))
dictionary1 = {1:"1", 3:"3"} # 将变量赋值为其他字典时,会发现存储地址不同
print(id(dictionary1))
dictionary1[3] = 4 # 但仅改变字典元素时,变量存储地址并未会变
print(id(dictionary1))
print('这是分割线-------')


# 三、区分可变与不可变有啥用:
# 1、用于参数传递:
# 当传递进函数的参数为不可变类型时,函数内变量值的改变不会引起函数外变量值的改变。
# 当传递进函数的参数为可变类型时,函数内变量值的改变会导致函数外变量值的改变,
  # 因为仅改变变量内的元素值时,其存储地址不会改变,实际上就是修改了同一个变量。
def modify_List(list):
    list[0]=1
    print(list)

list1=[2,3,4]
print(list1) # 打印函数外的list1变量

modify_List(list1) # 将list1作为参数,传入函数内部,在函数内修改列表元素值,打印出来

print(list1) # 再次打印函数外的list1变量,发现其内容与函数内的内容发生了相同的改变
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值