当前位置: 首页 > 后端技术 > Python

Python的变量和不可变数据类型

时间:2023-03-26 01:12:19 Python

immutabledatatypespython中不可变数据类型的定义是:当该数据类型对应的变量的值发生变化时,其对应的内存地址也会发生变化,称为不可变数据类型,包括:int(整数)、string(字符串)、元组(tuple)整数首先我们来看看为什么整数是不可变数据类型。给一个变量x赋值,然后改变这个x的值,前后两次输出内存地址id和数据类型typeid():获取对象的内存地址type():只有一个参数时,返回对象的类型。给定三个参数时返回一个类对象。#赋值x=1#打印x的内存地址和数据类型print(id(x),type(x))#Output:8791164511056#改变x的值x=2#打印改变后的xprint(id(x),type(x))的内存地址和数据类型#Output:8791164511088从上面的代码我们可以得出变量x是一个整数,当x改变的时候,变量的内存地址也改变了。所以整数是不可变的数据类型。String根据上面的例子,我们试着把变量x的值换成字符串,看看能不能断定string是不可变数据类型~#赋值x='abcdefg'#打印x的内存地址和数据类型print(id(x),type(x))#Output:30828000#改变x的值x='higklmn'#打印x改变后的内存地址和数据类型print(id(x),type(x))#Output:30828168代码中变量发生变化时,变量的内存地址从30828000变为30828168。所以字符串是不可变数据类型。元组的元组称为只读列表,即可以查询数据,但不能修改。如果我们强行修改元组中的数据,就会报错。t=(1,2,3,4,5)#修改元组的值t[1]=100会报错:TypeError:'tuple'objectdoesnotsupportitemassignmentvariabledatatypeinpythonforvariabledatatypes的定义是:当这种数据类型对应的变量的值发生变化时,那么它对应的内存地址就不会发生变化,称为可变数据类型。包括:set(集合)、list(列表)、dict(字典)set先来看set,定义一个集合set1,改变set1的值,输出内存地址set1={1,2,3,'123'}print("set:",set1,"内存地址:",id(set1),"\t","数据类型:",type(set1),"\t")#output:set:{1,2,3,'123'}Memoryaddress:41388296Datatype:#添加一个元素到set1set1.add(100)print("Set:",set1,"Memoryaddress:",id(set1),"\t","datatype:",type(set1),"\t")#output:set:{1,2,3,100,'123'}内存地址:41388296dataType:从上面的代码我们可以看出,即使一个set改变了,这个set的内存地址还是保持不变的。所以集合是可变的数据类型。Listlist1=[1,2,3,4,5]print("列表:",list1,"内存地址:",id(list1),"\t","数据类型:",type(list1),"\t")#输出:list:[1,2,3,4,5]内存地址:1860168数据类型:list1[0]=100print("list:",list1,"memoryaddress:",id(list1),"\t","datatype:",type(list1),"\t")#output:list:[100,2,3,4,5]内存地址:1860168数据类型:当列表中的值发生变化时,内存地址保持不变,因此列表是可变数据类型。字典字典是python中唯一以键值对的形式存储数据的映射类型。字典中的键值必须是可哈希的数据类型,即整数、字符串、元组等。dict1={'name':'kkk','age':18}print("dictionary:",dict1,"内存地址:",id(dict1),"\t","数据类型:",type(dict1),"\t")#Dictionary:{'name':'kkk','age':18}内存地址:31033960数据类型:dict1['sex']='man'print("Dictionary:",dict1,"MemoryAddress:",id(dict1),"\t","Datatype:",type(dict1),"\t")#字典:{'name':'kkk','age':18,'sex':'man'}内存地址:31033960数据类型:从上面的代码可以看出,当字典中的元素发生变化时,内存地址保持不变。两者都是31033960。因此字典是可变数据类型。