Python巩固基础02-基本数据类型之数据类型介绍
Python3中的基本数据类型
Python3有六个基本数据类型:
- Number 数字
- String 字符串
- List 列表
- Tuple 元组
- Set 集合
- Dict 字典
其中按照是否为可变对象分成两类:
- 可变数据类型:List、Dict、Set
- 不可变数据类型:Number、String、Tuple
Number 数字类型
Number类型包含:int、float、bool、complex(复数)
注意:
在 python3中,bool是int的子类;在值方面,True==1
、False==0
,当然,它们的id(内存地址)不同,仅是值相同;布尔类型可以和数字类型进行相加减。而python2中没有布尔类型,用0和1来进行表示。
>>> True + 3
4
>>> False - 3
-3
>>> True + 3.2
4.2
>>> id(True) == id(1)
False
>>> id(False) == id(0)
False
String 字符串
- Python中用一对单引号
'...'
、双引号"..."
、三个单引号'''...'''
,三个双引号"""..."""
括起来的值称为字符串;其中,三个单引号、三个双引号多用于多行字符串; - Python中没有字符类型,一个字符即长度为1的字符串;
- 字符串可以被索引和切片,但由于字符串是不可变数据类型,因此不能通过索引的方式修改字符串的值。
>>> a = 'thisisnever'
>>> a[3]
's'
>>> a[4] = 'k'
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'str' object does not support item assignment
List 列表
- 列表即写在方括号[]之间,用英文逗号分割元素的元素列表,如
[1, 2, 3, 4]
,列表是有序的; - list列表也可以被索引和切片,且因为list是可变数据类型,可以通过索引和切片来改变列表中的值。
>>> a = [1, 2, 3, 4]
>>> a[2]
3
>>> a[3] = 9
>>> a
[1, 2, 3, 9]
>>> a[1:3] = [8]
>>> a
[1, 8, 9]
当使用切片赋值时,值也必须为list
Tuple 元组
- 元组与列表类似,但元组是写在圆括号()之间,如
(1, 2, 3, 4)
,且元组为不可变数据类型,元组是有序的; - 元组也可以被索引和切片,但不可使用索引和切片改变元组内的元素;若元组内包含其他的可变对象,可以修改此可变对象的值;
1、在python中,一切皆对象,一个元组就是一个对象,而其中包含的n个元素,也就是n个对象,每个对象都有它自己的内存地址;
2、元组中包含的元素,不可变的是其中指向的内存地址;
3、若元组中包含的元素是可变对象,可以修改这个可变对象中的值,但此可变对象的内存地址不会改变,因此元组实际上指向的该可变对象的内存地址没有变化,元组也就没有被改变。 - 创建包含0个元素的元组的方法:
a = ()
,创建包含1个元素的元组的方法:a = (1,)
,需要加上逗号,否则会认为外括号仅仅是括号,创建的对象就成了数字类型。
>>> a = (1, 2, [3, 4])
>>> a[1]
2
>>> a[1] = 9
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> a[2] = [7, 8] # [7, 8]是一个新的对象,此种方式相当于修改元组a中,a[2]的指向
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(a[2])
140682942601216
>>> a
(1, 2, [3, 4])
>>> a[2][:] = [7, 8]
>>> a
(1, 2, [7, 8])
>>> id(a[2])
140682942601216
Set 集合
- 集合是写在花括号{}中,用英文逗号分隔开的元素集合;
- 集合是无序、不重复的,常用来去重;
- 创建集合可以用
a = {}
或者是a = set()
,但创建一个空的集合必须用set()
,否则会被当成字典。
Dict 字典
- 字典是写在花括号{}中,用英文逗号分隔开键值对集合,字典是无序的;
- 在字典中,键必须是不可变类型,且同一个字典中,键值不可以重复。
查询是否为某数据类型
type()函数
- 接收一个参数或三个参数,常用法为接收一个参数,返回该参数的类型;
- type()函数不考虑继承关系,即使用type判断继承某父类的子类的类型是否等于父类的话,无法进行判断。
>>> type(5) == int
True
>>> type('haha') == int
False
>>> type('haha') == str
True
isinstance()函数
- 接收两个参数,第一个参数为对象,第二个参数为类名基本类型或者由它们组成的元组(若是元组中的类型则返回True);
- isinstance()函数考虑继承关系。
>>> isinstance(9, int)
True
>>> isinstance([1, 2], list)
True
>>> isinstance([1, 2], (int, str))
False
>>> isinstance([1, 2], (int, str, list))
True
# 关于继承关系
>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> b = B()
>>> type(b) == B
True
>>> type(b) == A
False
>>> isinstance(b, A)
True