学过C++、C或者Java的程序员都知道,存储在内存中的数据是有类型的,C中用int表示整型,float表示浮点型,char表示字符型等等,并且变量在声明的时候就要指定类型,比如 int a = 10;表示将整数10赋给整型变量a,诸如此类。然鹅,下面这一段python代码你不会觉得有语法错误吧。
>>> a = 10
>>> b = 1.2
>>> c = 'A'
但是在交互环境中似乎并没有报错呀,怪了,难道python中变量没有类型么。客官莫急,下面就让我们一起来探索一下python数据类型的奥秘吧。
其实,python变量也是有类型的,只不过在变量声明的时候不需要显式指定罢了,下面一段脚本证明一下:
大家或许会注意到,这里的c = 'A'明明是char嘛,为啥是str呢,其实python中的字符串既可以用单引号''也可以用双引号"",比如下面这两个变量是等价的。
>>> d = "A"
>>> d is c
True
>>> id(d) == id(c)
True
在python中,无论是整型、浮点型还是复数,都是数字(number)类型。
关于字符串,后面还会深入讲解,并且python中的字符串类型非常灵活,同时也会由于编码类型导致乱码,当然这是后话了。
下面来看看比较特殊的数据类型,即列表、元组、集合和字典。
>>> la = ['a','b','abc',1,2,3.12] #这就是一个列表
>>> lb = ['ss',la] #这也是一个列表
>>> lc = [] #这依然是个列表
或许你注意到了,可以理解为列表可以包含任意数据类型,至少目前所知的是这样。python中列表的使用频率是非常高的,就是因为列表灵活并且有许多函数可用。
下面来看看元组:
>>> ta = ('a','dsa',la) #这是一个元组
元组也是十分灵活的一种数据类型,有没有感觉和列表一样,包含那么多数据类型,元组使用圆括号()声明,列表使用中括号[]声明,同时,元组的元素不支持更改,而列表是可以的。
集合和字典长相都一样,使用{}括起来,但是她们却是两种数据类型,相信通过下面的脚本能看出她们的不同吧。
集合使用场景不多,其实不能算是一种数据类型,相当于一种数据结构;大家都知道,集合中是不容孪生兄弟或者姐妹存在的,大意就是集合中的元素都是没有重复的,比如:
>>> ld = [1,2,3,4,4,3,5,5]
>>> sd = set(ld) #将有重复元素的列表转换成集合
>>> sd
{1, 2, 3, 4, 5}
集合使用set构造,但可以看到表示方法是{}。
字典是python中使用非常频繁的另一数据类型了,经常玩儿API的童鞋应该就不陌生了吧;python的字典有点相当于哈希表,便是key-value对。如:
>>> d1 = {} #注意了哦,这是空字典,不是集合哟
>>> d2 = {'name':'louwenju','sex':'未知'} #这也是字典
字典跟列表的不同之处在于,字典是根据键即key取值,而列表是根据索引取值。
千万不要被这些复杂的数据类型搞得眼花缭乱了,在后续的练习和实战中慢慢领会吧,还有非常多的内置函数便于操作。
网友评论