Python的六大基本数据类型

本文同样从整体(菜鸟水平的整体视角)去思考Python的数据类型。
和前面对Python基本的运算符理解相似,首先我的思考路径是——
(1)什么是Python内置的数据类型?
(2)六种内置的基本数据类型特点?
(3)为什么是这六种?
——在后面几篇中,将一个个数据类型介绍,以便作为菜鸟的我能系统和扎实的掌握这六种数据类型。
在开始对我思考的三个问题回答之前,将long long ago,我学习计算机是对数字和数据两个概念的理解(那时候或许年轻不懂事,但那时候的思考仍然有助于我理解,所以在此记录一下而已)。
我当时的理解是——数字就是单纯的数学符号,而数据不同,数据是用数学符号(即数字)为“基础单词”+相应的“语法规则”,以一定的逻辑组合起来的,可以表达出某种特定信息的记录依据——简称为数据,即以数字为依据来记录信息。
与英语的学习类似,在数据中,数字是记录信息所用的基本单词,数据的组合方式就相当于英语中将单词组合起来的语法。在大学的一门课程叫《数据结构》,是专门介绍如何将数字组合起来,比如串联、树形(二叉树)、环形等——三种最基本的数据结构类型。
Python的内置数据类型
与后面我们要学习的Python内置函数一样,所谓的内置,就是Python在自己的“脑子”里面已经“记住它们了”,只要你“说一声”,Python就能识别。而这里的“说一声”,就是你只要写出相应的标识符,Python就知道是什么数据类型,Python应该怎么储存你书写给它数据信息,然后你要调用的时候,它需要怎么样从内存中把它“拽”出来(用拽这个词,因为很多数据类型都是一串的)。
比如,我们在IDLE中输入5,Python看到后,知道这个符号表示的number类型,而Python对这种类型的数据处理语法是——用某种hash算法,把这个值代入算式,然后得到一个地址,最后把这个地址返回给一个变量。
再比如,初中初一一对一辅导我们在IDLE中输入"tianweigen",Python看到后,知道应该先将这一串东西的“串”一个个取下来(即字符),然后将每个字符都存放到一个空间里面,并给每个取下来的字符一个下标,从而记住每个字符,并在我们需要取出字符串时候,Python会按照下标运算,将每个字符从内存中再取出来,最后Python再给这些字符“串”起来,又还原成原来的字符串了。
剩余几种数据类型——()、[]、{}、{key=value},我认为无非就是Python看到这些符号后,自己的“脑子”(Python的运行环境)知道按照什么样的语法去分析和处理,就如同我们用脑子去学习英语,但我们看到 I know what she wants to do,就知道这是一个宾语从句,Python识别到[]这个中括号,就知道要给下标,并用自己“脑子”里面Python语言的发明者吉多“教给”它的算法算出一个相对可变的地址。
因此,所谓的内置类型,就是Python语言的发明人吉多一开始就“植入”到Python大脑的一套数据识别和处理语法规则(实际上就是算法和存取规则)。就如同小鸭子一旦出生,看到的第一个能动的物体就会认为是它“妈妈”一样,内置的基因决定的(这条基因就是算法!)
同理,Python的内置函数也是如此,就是Python中已经“脑子”(内置的含义)中记住了这些函数的处理方式,你要做的就是在IDLE或其他编程环境中告诉它,你要调去哪个函数的名称(标识符),剩余的Python“知道”怎么做了。
为什么Python要内置数据类型或函数
依然和我们前面所说的Python运算符的理解一样,这些能够创造编程语言的技术大神们告诉你,他们只要用那几种我们看起来非常基础的±*/等运算符和这六种基础的数据类型,你要的那些复杂功能都能给你实现。
就如同武林高手比武,问他要什么武器,人家只要基本的几样兵器足以搞定一切,也类似于一个登封的木匠,会告诉你,只要锯子+凿子+刨子+尺子+墨斗即可将木头造成你要的家具。
这些技术大神想告诉你,你看到的Python里面那么多好用、方便的函数、类等功能,其实他们在“后面”你看不到的内部(内置),用的都是基本的加减乘除运算和基本的数据结构——其实就四种:顺序、链式、环式、树,就能搞定或创造出你要的东西。
其实,从前面我的理解,我认为像字符串、列表、元组、集合、字典,都已经不是基本类型了。这些数据结构,应该是这些技术大佬通过运算符+数据结构的组合逻辑,将数字或字符(这才是最最基础的),按照某种运算逻辑组合(逻辑有:串联起来,环起来、树状等),并加入某种存取地址的运算规则,而形成了字符串、列表、元组、集合、字典等具有某种特点的“结构”型数据类型。
比如,元组的元素固定,或者集合的元素互异性,无非都是通过某种运算实现的,其底层操作的应该依然是数字和字符而已。
因此,到这里,我应该也能回答,为什么在Python里面,除了数字number类型外,其他5种——字符串、列表、元组、集合、字典——都属于序列类型。或许,是因为这5中类型都已经是通过某种数据结构逻辑组合而成的(有结构就有逻辑顺序,有顺序,应该就是序列了)。
对序列类型的数据,可以进行下标、截取、in(成员运算)等,如下:
s = “tianweigen”

for i in s:
print(i)
t
i
a
n
w
e
i
g
e
n
从上面就可以看出来,字符串的基本元素还是字符,只不过加入了某种将这些字符串联起来的运算方式——下标运算。
而像number这种最基础的(没有结构的数据),就不会进行 in这种成员运算(in range()这种不算——因为range返回的是列表,还是序列类型)。
为什么Python要这6种类型
按照道理,对大神们来说,只要数字、字符2种就可以了(尤其对数据结构这门课程非常熟或专业的选手)。那为什么Python规定了6种呢?
这个和Python的设计宗旨有关了,这是Python在方便和简洁做了选择的结果。因为,少了,每次编程都要从最基本的2种类型数据去结合数据结构的知识,构建其他几种功能的结构类型的数据,会非常不方便,而且一些像我这样的菜鸟就根本办不到啊。但,如果让Python这些技术大牛,把我们每次编程要用到的数据类型都编写出来,或许他们能做到,但我们根本记不住,更不用去谈灵活运用了。
这种简化逻辑,就如同一位高手师傅告诉徒弟,不用学习老师傅的招式,因为招式是变化无穷的,要徒弟学习几种“心法”或基本的武功底子,有了这些,自己的招式就会自然运用自如。
也如同我们学习某种舞蹈(如鬼步),你只要把步伐掌握了,手上的动作和脚下的各种变幻的舞姿,都是这些基本的演化。
钢琴的学习不也是这样的啊!你只要会那些琴键和音符,世界上的如何曲子都可以应对,甚至是创造出优美的旋律。
多一句,在以前我们学习计算机语言时,老师就说过,看起来纷繁复杂的计算机程序,拆解到本质,就3个“语法规则”,即计算机语言的逻辑——顺序、条件(if)、循环(for)。也就是在最本质上,所有的计算机语言在逻辑结构上,就是顺序、条件、循环。即使你现在学习的是高级语言,高级的底层也是这三种基本的逻辑实现的。
当时听了,觉得这些计算机大神真是太牛了,用“三句话”把整个程序编程给概况完毕了。
现在,终于能体会到以前大咖老师说的,学好C、数据结构、计算机原理(汇编)、算法,你才有可能成为计算机的真正大牛。因为,无论多么高级的语言和程序,都可以以C为基础,通过数据结构的思想,知道计算机的软硬件和指令集,用优秀的算法作为催动来实现。

你可能感兴趣的:(Python的六大基本数据类型)