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==1False==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
posted @ 2022-02-16 09:58  hook_what  阅读(50)  评论(0编辑  收藏  举报