【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念

???? 作者 :“大数据小禅”


???? 粉丝福利 :加入小禅的大数据社群


???? 欢迎小伙伴们 点赞????、收藏⭐、留言????


目录

内存·本质·连续储存:

这一个章节将会讲到的是,关于python中的内存问题,这个问题很容易被忽视,但却是作为python底层实现必不可少的一个环节,本篇文章将带你彻底了解python内存与类型的本质。


内存·本质·连续储存:

现在有一串整形数字,整形是基本的数据类型,要保存这串数字,你可能想到的是产生一个列表啊他们存进去,但是现在要把你所学的高级数据类型(元组,字典,列表)全部抛弃掉,只记住整型,浮点型,字符串。现在考虑的是如何把一个整形的储存,要研究的是他存的时候到底是一个什么概念,这里就要引入内存的概念。


内存是跟cpu搭钩的,内存的基本单位是一个字节的,而一个字节是8位的。


现在比如说有一个数字100,那么内存cpu到底是在哪里去找100这个数字呢?下图所示,是一个连续的存储单元跟存储空间,假如说100现在是存储到那空间中,那么你是不是需要告诉计算机要从哪个位置把这个数字给取出来?那么现在,给那片连续的空间标出一个位置(0X01…这里比如100放进了0X03这个位置),那么这个时候再要去照这个数字的时候,只需要告诉计算机0X03这个位置,之后计算机把这个位置的数据取出去,这个东西是跟硬件有关系的,也就是说计算机中的内存是这样连续的存储空间(如下图),而连续的存储空间呢他是由单元组成的,那么基本的单元是什么呢?就代表的是图中的字节(那一列八个空格那里),他把一个字节作为一个标识,(一个字节8位)一个字节的8位整体会作为一个地址标识,那么我们告诉计算机去OXO1找的时候(举例),计算机能够直接去找到这个OXO1所标识的这个存储空间,一下子它能读出8位来。也就是说,计算机在进行标识的时候,他是按照一定的存储单元进行标识的,那在存数据的时候也就需要有多个存储单元来放到一起了。


【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念如果有一个整型,那么这个整形要占多少位呢?那么现在就有一个类型的概念,之前学变量直接就给你引出了变量有(整形,浮点型,字符串类型),那么这类型到底是什么概念,他的本质是什么东西呢?他就决定了,如果有一个整型数据,那么我在内存当中到底要申请多少个存储单元来把这个数给存起来,这是我们需要解决的问题。那么,如果是一个整型的话,他要在内存中占多少个存储单元呢,对于32位机器来说的话,整型是要存4个字节的,也就是说它要占4个单元。比如现在有个 int a=1(0000 00001),你现在看起来他是一个整数,那么在内存中他是要把1转成二进制存起来的,我们看到的一个1,在计算机内部其实是占了4个存储单元(如下图演示)。一个字符占一个字节,类型不同占的内存单元不同,这就是内存的本质之一,不同的类型,在计算机中占了不同的位置。如果说存的时候你告诉计算机,你存的是一个整型,那么它取出来的时候就是一个整型1,而如果你告诉计算机他是4个字符的话,那么取出来的数就不是整型了,而是4个字符,4*char。所以说第二点就是,计算机在拿到它的时候怎么去对待他的问题。


为什么要说到这个东西呢?因为计算机中所有高级的数据结构,都是由这些基本 的数据类型组成的,那么基础的数据类型又会涉及到内存,即这些数据要怎么存?



【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念往下走,那里有五个整型,那么计算机要怎么保存他?以int=1,2,3举例,如果现在要把这三个存储起来,下面一个方块对应图中4 个字节,如果这三个数字是没有联系的,那么就按照上面的储存,但是现在这上方块是存在某种联系的,那现在就把三个整数给连续存放起来的话,找的时候可不可以方便去找,现在用列表装起来li=[1,2,3]。


【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念这列表中的三个数字会有一个起始的数字,假设这个起始的数字是1,如果现在要去找这集合中的第三位置的元素是谁,那可以直接通过第一个位置的偏移直接找到第三位置的数字。第一个找第二儿个其实为位置的时候就往后偏4个位置去找。也就是说通过依次计算就可以定位到你要找的数字。如果我们采用连续储存的方式去储存数据的话,那么我们要去索引的时候那就会变得很简单。如果分开去放的话,那么这上数字就没有联系了,找的会也就会变得困难。


所以,在引入的第一组数据,相同类型的时候怎么去存储,最直观,最基本的,我们就按照顺序紧靠在一次,那么对于这种存储形式去存储数据的话,我们就把他叫做顺序表,顺序表就是把数据按照顺序存放,而且展示出来像表格的形式,所以叫做顺序表。上面就是顺序表以及他对应到内存中的形式,结构如下入所示。


【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念【python入门到精通】理解python中的内存·类型本质·以及连续储存以及顺链表的概念

上一篇:Ubuntu下的cmake自选版本安装


下一篇:使用Google Authenticator给ssh进行登录验证