列出python中可变数据类型和不可变数据类型,python可变数据和不可变数据

  列出python中可变数据类型和不可变数据类型,python可变数据和不可变数据

  本文主要介绍对python数据类型可变性和不变性的深入分析。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010 1.可变和不可变类型的特征1。不可变数据类型2。可变数据类型2。哪些是可变类型,哪些是不可变类型

  

目录

  

一.可变类型与不可变类型的特点

  当一个不可变的数据类型第一次被声明时,它会在内存中打开一个空间来存储这个变量的赋值。这个变量实际存储的不是赋值,而是存储这个值的空间的内存地址。通过这个地址,变量可以从内存中获取数据。所谓不可变,就是我们不能改变这个数据在内存中的值。因此,当我们改变这个变量的赋值时,我们只是在内存中开辟了一个新的空间,并将这个新的数据存储在这个新的内存地址中,而原始变量不会引用原始数据的内存地址,而是引用新数据的内存地址。

  示例:

  x=18

  id(x)

  4497811200

  id(18)

  4497811200

  x=19

  id(x)

  4497811232

  id(18)

  4497811200

  y=18

  id(y)

  4497811200

  首先,x=18,打开一个地址为4497811200的内存,也就是18对应的地址是4497811200。后来x=19,重新打开一个地址为4497811232的内存来存储19。可以看出,不变是指18和19在内存中的地址不会改变。当18赋给Y时,Y指向的地址是444。

  

1.不可变数据类型

  结合不可变数据类型,可变数据类型很好理解。变量数据类型意味着变量所指向的内存地址的值是可以改变的。

  x=[1,2,3]

  id(x)

  4501838920

  y=[1,2,3]

  z=[1,2,3]

  id(y)

  4501838600

  id(z)

  4501838664

  换个角度看:

  类型:当该数据类型对应的变量的值发生变化时,其对应的内存地址也会发生变化。对于这种数据类型,称为不可变数据类型。

  变量数据类型:当其对应变量的值发生变化时,其对应的内存地址不变。对于这种数据类型,称为可变数据类型。

  #a的值变了,a对应的内存地址也变了。

  a=1

  id(a)

  4497810656

  a=2

  身份证(2)

  4497810688

  #直接在A上操作相当于复制A的值,在其他内存地址上操作会保持A的值不变。

  a 1

  三

  id(a)

  4497810688

  一

  注射毒品

  #b的值改变了,b对应的内存地址保持不变。第一次给B赋值时,B被划分为一个内存空间,空间保持不变。

  b=[1,2,3]

  身份证(b)

  4501839496

  #直接在B上操作,B的值变了,B指向的内存空间不变。

  b .追加(4)

  身份证(b)

  4501839496

  乙等

  [1, 2, 3, 4]

  

2.可变数据类型

  不可变:数(number),字符串(String),元组(Tuple)。

  #整数

  a=1

  打印(id(a),类型(a))

  a=2

  打印(id(a),类型(a))

  # 4361254304类“int”

  # 4361254336 class int

  #字符串

  b=安妮

  打印(id(b),类型(b))

  b=anne1995

  打印(id(b),类型(b))

  # 4363638744类“str”

  # 4363684784类“str”

  #元组

  c1=[1 , 2]

  c=(1,2,c1)

  print(c,id(c),type(c))

  c1[1]=djx

  print(c,id(c),type(c))

  # (1,2,[1 , 2]) 4363948248类“元组”

  # (1,2,[1 , djx]) 4363948248类元组

  可以变:(集),列表(单),字典(词典)。

  #设置

  s={1, d , 34 , 1 ,1}

  打印、类型、id

  s.add(djx )

  打印、类型、id

  # {1, 1 , d , 34} class set 4401385256

  # {1, 1 , 34 , d , djx} class set 4401385256

  #列表

  list=[1, q , qwer ,True]

  打印(列表,类型(列表),id(列表))

  list.append(djx )

  打印(列表,类型(列表),id(列表))

  # [1, q , qwer ,True] class list 4401113608

  # [1, q , qwer ,True, djx] class list 4401113608

  #字典

  元组=(1)

  dic={1:2}

  d={ tuple:1, key2:djx , key3:li}

  print(d,type(d),id(d))

  d[key4]=哈哈

  print(d,type(d),id(d))

  # {1: 1, key2: djx , key 3 : Li } class dict 4401075976

  # {1: 1, key2: djx , key3: 李, key4: 哈哈 } class dict 4401075976

  注意:此时,tuple的值已经改变,而内存地址没有改变,但我们仍然称tuple为不可变类型。为什么?其实改变的是元组中的列表。列表是变量类型,值改变后地址保持不变。但是元组的定义是不可变的,

  元组称为只读列表,即数据可以查询但不能修改。

  以上是深入分析python的可变和不可变数据类型的详细内容。关于python的可变和不可变数据类型的更多信息,请关注流行的IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: