python变量的可变,不可变

一、变量的三个参数

就像区分一个人一样,同样都是张三,可能这个张三就不是那个张三。同一个变量是指的什么相同呢?

变量由三个维度决定,内存地址id()、值value,类型type()。通常判断变量是否为同一个变量是由存储的内存地址决定的。

像如下的赋值实际上是把变量a的指针指向了5的内存地址,打印可以看到a的内存地址和5的内存地址是一样的。

a = 5

print(id(a),id(5))

通常在做判断的时候,==用于判断值value,is 用于判断内存地址id。

二、数据类型的两种分类

本段主要对不同类型的变量初始化的方式和可变不可变的定义进行阐述。

1、不可变类型

不可变类型有Numble(数字)、Tuple(元组)、String(字符串)。对不可变数据类型的变量值进行修改时,内存地址也会发生改变。下面对三种类型逐一展开。

(1)Numbles数字型,将对应的值赋给变量,就相当于初始化了一个数字型变量。如果要将变量进行转换,直接用int()、float()、complex()执行。

a)整型int

# 初始化一个新变量X
x = 5
# 打印出x的变量类型和变量的值
print(type(x),x)

b)浮点型float

# 初始化一个新变量y
y = 3.1415926
# 打印出y的变量类型和变量的值
print(type(y),y)

c)复数complex

复数的概念同数学里的复数是一样的,运算也是一样的。

# 初始化一个新变量z,q
z = (3+4j)
q = complex(3,4)
# 打印出q的变量类型和变量的值
print(type(z),z)
print(type(q),q)

(2)Tuple元组型

元组用小括号()来定义。

# 定义元组,可以用小括号,也可以不用,如果只有一个元素的时候,后面要加,
tp1 = 1,
tp2 = (1,)
tp3 = ('张三','李四','王五')
print(id(tp1),type(tp1))
print(id(tp2),type(tp2))
print(id(tp3),type(tp3))

不可变之处:

# 当变量的值发生改变时,内存地址也就变了
x = 5
print(id(x))
x = 6
print(id(x))

2、可变类型

可变类型有List(列表)、Dict(字典)、Set(集合)。

(1)List列表

# 列表对象用[]来定义
l1 = [1,2,3,4,5]
l2 = ['a','b','c']
print(type(l1),l1)
print(type(l2),l2)

(2)Dict字典

# 字典用{}定义,里面的元素是一个一个的键值对
d1 = {'name':'zhangsan','age':18}

(3)Set集合

# 集合用{}或者set()定义,空的集合只能用set()
s1 = {'a','b','c','d','e'}
s2 = set(['xiaoming','xiaobai','xiaolan'])
print(type(s2),s2)

可变之处:

#对集合进行update
s1 = {'a','b','c','d','e'}
s2 = set(['xiaoming','xiaobai','xiaolan'])
print(type(s2),id(s2),s2)
s2.update(['weihong'])
print(type(s2),id(s2),s2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值