数字类型用于存储数学意义上的数值。
数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。
还是要强调一下Python的变量和数据类型的关系,变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念。类似1,[2,3,4],“haha”这一类对象才具有数据类型的概念。
例如:
a=1#创建数字对象1
a=2#创建数字对象2,并将2赋值给变量a,a不再指向数字对象1
这里,发生了变化的是变量a的指向,而不是数字对象1变成了数字对象2。初学者可能会比较迷糊,但不要紧,我们努力去明白它。
Python支持三种不同的数字类型,整数、浮点数和复数:
1.整数(Int):
通常被称为整型,是正或负整数,不带小数点。Python3的整型可以当作Long类型(更长的整型)使用,所以Python3没有Python2的Long类型。
例如:1,,-,0,等等。
表示数字的时候,有时我们还会用八进制或十六进制来表示:
十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2。
八进制用0o前缀和0-7表示,例如0o12
Python的整数长度为32位,并且通常是连续分配内存空间的。
id(-2)186820id(-1)id(0)id(1)id(2)
从上面的空间地址看,地址之间正好差32。为什么会这样?因为Python在初始化环境的时候就在内存里自动划分了一块空间,专门用于整数对象的存取。当然,这块空间也不是无限大小的,能保存的整数是有限的,所以你会看到id(0)和id(00)之间的地址差别很大。
id(0)id(00)
小整数对象池:
Python初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含个指向整数对象的指针数组,范围是-5到。也就是说比如整数10,即使我们在程序里没有创建它,其实在Python后台已经悄悄为我们创建了。
为什么要这样呢?我们都知道,在程序运行时,包括Python后台自己的运行环境中,会频繁使用这一范围内的整数,如果每需要一个,你就创建一个,那么无疑会增加很多开销。创建一个一直存在,永不销毁,随用随拿的小整数对象池,无疑是个比较实惠的做法。
下面我们来验证一下小整数对象池的存在。
id(-6)id(-5)id(-4)id()id()id()
从id(-6)和id()的地址,我们能看出小整数对象池的范围,正好是-5到。
除了小整数对象池,Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。
a=0000id(a)dela#删除变量ab=0000id(b)
上面,我给变量a赋值了整数0000,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为0000,再次看下b的内存地址,和以前a存在的是一样的。
del是Python的删除关键字,可以删除变量、函数、类等等。
这一段内容,可能感觉没什么大用,但它对于理解Python的运行机制有很大帮助。
以上就是关于Python数字类型的详解,后续会持续更新Python相关知识点。私信回复,免费领取G网盘全科目编程学习资源,包含视频教程、项目源码、学习路线图等,赶快私信我吧!