最小化python 之 基本数据类型

时启发2024-05-12 21:49:10  129

早些年做PHP开发的时候,Python刚刚出了版本3。有个朋友说,你为啥不学Python。于是买了本书,翻了翻,然后云里雾里。那个时候的感觉是python太复杂了,复杂到只是想到字符串的切片就心有余悸,然后没了然后。

时光荏苒,十多年过去了,当人工智能的狂风肆虐完大街小巷,连老家割麦子的乡亲们都能跟你侃侃而谈的时候,转头再看,暗自道了一声还好——Python主版本依然是3,貌似还没有被这个时代抛开很远:D

本以为编程语言随意切换一下,学习python不是什么问题,但还是大意了。python官网的帮助文档本想打印下来参考一下,没想到自带扩展库都有上千页A4的篇幅,这还不算第三方的库,比如numpy、pandas、matplotlib等等。所以,最后决定首先对比着学一下最小的python——这里所谓的最小,指的是即便不使用扩展库,也能实现的应用的功能上的最小。

路径一决定,事情就好办。无论何种功能必然少不了数据的输入和输出。因此,除了基本运算之外,本文要谈的就是数据和它的类型,主要注意到了三方面:

1. 与其他编程语言不同的是,Python不存在常量和变量之分,只有形式上写法的不同。Python的内置常量通常以首字母大写的形式表示,如None、True、False等。还比如math库里的π,与其他语言的常量不同,pi居然可以另行赋值(见图1)。因此,大家如同约定好的一般,自定义的常量往往采用全部大写的形式表示。

图1 常量的值是可以改变的

2. python的基本数据类型有字符串、数值、容器(列表list,集合set,元组tuple和字典dict)等,相对其他编程语言而言,不仅不存在日期时间一说,也不存在数组一说。当然,其他编程语言的数组,在Python中更多的可以通过列表list来表示。另外,特别有意思的是,Python中的容器类数据表示,把大中小括号全占了——小括号用于表示元组tuple,中括号[]用于表示列表list,大括号{}用于表示集合set和字典dict,而字典dict和集合set表示的区别在于,集合set如同只包含了字典dict中关键字那一半,见图2。

图2 元组、列表、集合和字典

3.基本数据类型的比较,通常都是按值做比较。Python有个内置函数id(var),用于获取var变量或对象的唯一标识,通常这会是在内存中的地址。我们用此函数来确认一下两个变量是如何比较的。比如元组a=(1,2,3,4),a2=(1,2,3,4),a3=a的情况下,a==a2==a3(见图3):

图3 元组之间的比较

再来看列表之间的比较,b=[1,2,3,4],b2=[1,2,3,4],b3=b的情况下,b==b2==b3(见图4):

图4,列表之间的比较

然后是集合之间的比较,由于集合中的元素不允许重复,于是就产生了有意思的结果,即便赋值的各元素的顺序不同,但结果仍然是相等的,c={'h','i','j','k'},c2 = {'i','k','h','j'}, c3 = {'j','h','k','i'},c==c2==c3(见图5):

图5 集合之间的比较

最后是字典之间的比较,同样有点意思,原本以为关键字一样的话,值的部分其用id函数获取的唯一值一样才行,但显然值的部分只要为基础类型,比如字符串,仍然没有问题(见图6):

图6 字典之间比较,同样不在乎关键字部分的顺序

而如果值的部分为对象,也是可以的(见图7),所以所对象的比较是与顺序无关的:

图7 字典的值部分换成了对象,结果仍然相等

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/487138.html
0
最新回复(0)