一、标准数据类型
Python 3中有6种标准数据类型:
1. Number(数字)
在Python 3支持int, float, bool, complex
python
numA, numB, numC, numD = 10, 8.8, True, 1 + 5j
print("numA的数据类型为: ", type(numA))
print("numB的数据类型为: ", type(numB))
print("numC的数据类型为: ", type(numC))
print("numD的数据类型为: ", type(numD))
输出结果:
python
numA的数据类型为: <class 'int'>
numB的数据类型为: <class 'float'>
numC的数据类型为: <class 'bool'>
numD的数据类型为: <class 'complex'>
注意:bool是int的子类,True和False可以和数字相加,True == 1, False == 0
python
print("numC是否是int类型: ", isinstance(numC, int))
数值运算
python
numE, numF = 10, 2
# 加法
numE + numF = 12
# 减法
numE - numF = 8
# 除法,得到一位浮点数
numE / numF = 5.0
# 整除,得到一个整数
numE // numF = 5
# 取余
numE % numF = 0
# 乘方
numE ** numF = 100
2. String(字符串)
Python中的字符串用单引号 ' 或者双引号 " 括起来,同时可以使用反斜杠 \ 转义特殊字符
字符串截取语法格式如下:
变量[头下标:尾下标:步长]
索引值从0开始,-1为末尾开始的位置
加号 + 代表着字符串的拼接,星号 * 代表着复制的字数
python
myStr = "hello world!"
print("从第一位开始输出整个字符串: ", myStr[0:])
print("从第二位到第五位输出,第五位取不到: ", myStr[2:5])
print("从头开始输出字符串,步长为2: ", myStr[::2])
print("从头部输出到尾部,不包括尾部: ", myStr[0:-1])
print("反转: ", myStr[::-1])
print("字符串的拼接", myStr + "!")
print("重复打印俩次字符串", myStr * 2)
输出结果:
python
从第一位开始输出整个字符串: hello world!
从第二位到第五位输出,第五位取不到: llo
从头开始输出字符串,步长为2: hlowrd
从头部输出到尾部,不包括尾部: hello world
反转: !dlrow olleh
字符串的拼接 hello world!!
重复打印俩次字符串 hello world!hello world!
反斜杠可以用来转义,使用 r 前缀可以让反斜杠不发生转义(原始字符串)
python
# 会换行输出 i hao,\n代表换行
strA = "\ni hao"
# 会输出 \ni hao,因为r前缀可以让反斜杠不发生转义
strB = r"\ni hao"
3. List(列表)
列表中的元素类型可以不相同,它支持数字、字符串,甚至可以包含列表(即嵌套列表),列表写在方括号[]之间,用逗号分隔开元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
python
变量[头下标:尾下标]
如图所示:

python
myList = ['abc', 234, 2.3, 'hello', "world"]
listB = ['this', 'is']
print("打印整个列表: ", myList)
print("打印第一个元素: ", myList[0])
print("打印第2到3个元素: ", myList[2:4])
print("重复打印两次列表: ", myList * 2)
print("拼接俩个列表: ", myList + listB)
输出结果:
python
打印整个列表: ['abc', 234, 2.3, 'hello', 'world']
打印第一个元素: abc
打印第2到3个元素: [2.3, 'hello']
重复打印两次列表: ['abc', 234, 2.3, 'hello', 'world', 'abc', 234, 2.3, 'hello', 'world']
拼接俩个列表: ['abc', 234, 2.3, 'hello', 'world', 'this', 'is']
列表与字符串不一样的就是,列表中的元素是可以改变的
python
myList[0] = 'haha'
print("改变第一个元素的值之后的列表: ", myList)
myList[1:3] = []
print("将2到3的元素设置为空列表,即删除2到3的元素: ", myList)
输出结果:
改变第一个元素的值之后的列表: ['haha', 234, 2.3, 'hello', 'world']
将2到3的元素设置为空列表,即删除2到3的元素: ['haha', 'hello', 'world']
4. Tuple(元组)
元组与列表类似,不同之处在于元组的元素不能进行修改,元组写在()里,元素之间用逗号隔开。元组中的元素类型也可以不相同:
python
myTuple = ('abc', 234, 3.2, 'hello', 'world')
tupleA = ('this', 'is')
print("输出整个元组: ", myTuple)
print("输出第一个元素: ", myTuple[0])
print("输出索引第一个到第二个: ", myTuple[1:3])
print("输出从索引第2个开始的所有元素: ", myTuple[2:])
print("输出俩次元组: ", myTuple * 2)
print("拼接俩个元组: ", myTuple + tupleA)
输出结果:
python
输出整个元组: ('abc', 234, 3.2, 'hello', 'world')
输出第一个元素: abc
输出索引第一个到第二个: ('abc', 234)
输出从索引第2个开始的所有元素: (234, 3.2, 'hello', 'world')
输出俩次元组: ('abc', 234, 3.2, 'hello', 'world', 'abc', 234, 3.2, 'hello', 'world')
拼接俩个元组: ('abc', 234, 3.2, 'hello', 'world', 'this', 'is')
虽然元组的元素不可改变,但它可以包含可变的对象,比如list列表
构造包含0个或者1个元素的元组比较的特殊
python
# 空元组
tupA = ()
# 一个元素,需要在元素后面添加逗号,如果不添加逗号的话 (42) 会被解释为一个数字,而括号就会被识别为数学运算符中的括号
tupB = (42, )
注意:string、list和tuple都属于 sequence(序列)
5. Set(集合)
Set是一种无序的、可变的数据类型,用于存储唯一的元素。集合中的元素不会重复,并且可以进行交集、并集、差集等等常见的集合操作。
集合使用{}表示,元素之间使用 ,分隔。也可以使用set()函数创建集合
注意:创建一个空集合必须使用set(),而不是{},因为{}创建的是一个空字典
python
mySet = {"learn", "to", "Python", "every", "day"}
print(mySet)
if Python in mySet:
print("Python 在集合当中")
else:
print("Python 不在集合当中")
# set 也可以进行集合运算
setA = set("abcdaaaddcc")
setB = set("cdef")
# 输出 setA 中唯一的元素
print("输出 setA 中唯一的字符: ", setA)
# setA 和 setB 中的差集(在 setA 中但不在 setB 中)
print("setA 和 setB 中的差集: ", setA - setB)
# setA 和 setB 的并集(在 setA 或 setB 中)
print("setA 和 setB 的并集: ", setA | setB)
# setA 和 setB 的交集(同时在 setA 和 setB 中)
print("setA 和 setB 的交集: ", setA & setB)
# setA 和 setB 的对称差集,在 setA 或 setB 中但不同时存在
print("setA 和 setB 的对称差集: ", setA ^ setB)
输出结果:
python
{'every', 'day', 'learn', 'Python', 'to'}
Python 在集合当中
输出 setA 中唯一的字符: {'c', 'd', 'a', 'b'}
setA 和 setB 中的差集: {'a', 'b'}
setA 和 setB 的并集: {'c', 'b', 'f', 'a', 'e', 'd'}
setA 和 setB 的交集: {'c', 'd'}
setA 和 setB 的对称差集: {'b', 'f', 'e', 'a'}
6. Dictionary(字典)
字典是一种映射类型,使用{}标识,是由一个键值对(key:value)的集合,键(key)必须使用不可变类型,并且在同一个字典中唯一。
python
myDict = {"one":"onePoint", 2:"twoPoint", "three":"threePoint"}
print("输出键为'one'的值: ", myDict['one'])
print("输出键为'2'的值: ", myDict[2])
print("输出整个字典: ", myDict)
print("输出字典所有的键: ", myDict.keys())
print("输出字典所有的值: ", myDict.values())
输出结果:
python
输出键为'one'的值: onePoint
输出键为'2'的值: twoPoint
输出整个字典: {'one': 'onePoint', 2: 'twoPoint', 'three': 'threePoint'}
输出字典所有的键: dict_keys(['one', 2, 'three'])
输出字典所有的值: dict_values(['onePoint', 'twoPoint', 'threePoint'])
-
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)
-
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)
二、数据类型转换
Python中的数据类型转换可以分为两种:
- 隐式类型转换 - 自动完成
- 显式类型转换 - 需要使用类型函数来转换
隐式类型转换
在隐式转换中,Python会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。
就比如较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据的丢失。
python
numA = 100
numB = 0.01
numC = numA + numB
print("numA的数据类型为: ", type(numA))
print("numB的数据类型为: ", type(numB))
print("numC的值为: ", numC)
print("numC的数据类型为: ", type(numC))
输出结果:
python
numA的数据类型为: <class 'int'>
numB的数据类型为: <class 'float'>
numC的值为: 100.01
numC的数据类型为: <class 'float'>
Python会自动将较小的数据类型转换为较大的数据类型,避免数据的丢失
显示类型转换
在显示类型转换中,用户将对象的数据类型转换为所需的数据类型,我们使用int()、float()、str()等预定义函数来执行显示类型转换。
如int()强制转换为整型。
python
# 显示类型转换
numA = 100
numBStr = "100"
numC = 10.01
print(f"转换前的numA={numA},numA的类型为{type(numA)}")
print(f"转换前的numBStr={numBStr},numBStr的类型为{type(numBStr)}")
print(f"转换前的numC={numC},numC的类型为{type(numC)}\n")
# int() 强制转换为整型,会丢失精度
numBStr = int(numBStr)
numC = int(numC)
print(f"转换后的numBStr={numBStr},numBStr的类型为{type(numBStr)}")
print(f"转换后的numC={numC},numC的类型为{type(numC)}\n")
#float() 强制转换为浮点型
numA = float(numA)
print(f"转换后的numA={numA},numA的类型为{type(numA)}\n")
# str() 强制转换为字符串类型
numC = str(numC)
print(f"转换后的numC={numC},numC的类型为{type(numC)}\n")
输出结果:
python
转换前的numA=100,numA的类型为<class 'int'>
转换前的numBStr=100,numBStr的类型为<class 'str'>
转换前的numC=10.01,numC的类型为<class 'float'>
转换后的numBStr=100,numBStr的类型为<class 'int'>
转换后的numC=10,numC的类型为<class 'int'>
转换后的numA=100.0,numA的类型为<class 'float'>
转换后的numC=10,numC的类型为<class 'str'>
三、注释
在Python3中,注释分为单行注释和多行注释
单行注释
Python中,单行注释以#开头,后面的文本内容就会被解释器视作注释不会被执行
python
# 这是一行单行的注释
print("Hello Python!")
多行注释
Python中,多行注释以三个单引号'''或者三个双引号"""所包围
python
'''
这是多行注释
这是多行注释
'''
print("Hello Python")
"""
这也是一个多行注释
这也是一个多行注释
"""
print("Hello Python")
注意:
- 如果将多行注释赋值到一个变量中,那么这个注释将不是注释,而是一个字符串
python
myStr = """这是一个字符串"""
- 在多行注释中,不能进行嵌套注释,这是不允许的,这个可能会导致语法的报错。但是可以在多行注释中进行一个单行的注释
python
# 下方这个是一个错误的注释方法
'''
'''
在多行注释中在进行嵌套的注释,这是不被允许的
'''
'''
# 下方这个是一个正确的注释方法
'''
# 在多行注释中,可以使用单行的注释
'''
Docstring文档字符串
文档字符串是一种特殊的注释,可以为函数、类、模块等添加文档说明,他类似于Javadoc
同时Docstring可以通过__doc__属性直接访问,同时也可以使用help函数查看
python
# Docstring 字符串
def add(a, b):
"""返回两数之和"""
return a + b
# 通过__doc__属性进行访问
print(add.__doc__)
help(add)
输出结果:
python
返回两数之和
Help on function add in module __main__:
add(a, b)
返回两数之和
使用inspect模块提取文档
python
def add(a, b):
"""返回两数之和"""
return a + b
print(inspect.getdoc(add))
输出结果:
python
返回两数之和
一、标准数据类型
Python 3中有6种标准数据类型:
1. Number(数字)
在Python 3支持int, float, bool, complex
python
numA, numB, numC, numD = 10, 8.8, True, 1 + 5j
print("numA的数据类型为: ", type(numA))
print("numB的数据类型为: ", type(numB))
print("numC的数据类型为: ", type(numC))
print("numD的数据类型为: ", type(numD))
输出结果:
python
numA的数据类型为: <class 'int'>
numB的数据类型为: <class 'float'>
numC的数据类型为: <class 'bool'>
numD的数据类型为: <class 'complex'>
注意:bool是int的子类,True和False可以和数字相加,True == 1, False == 0
python
print("numC是否是int类型: ", isinstance(numC, int))
数值运算
python
numE, numF = 10, 2
# 加法
numE + numF = 12
# 减法
numE - numF = 8
# 除法,得到一位浮点数
numE / numF = 5.0
# 整除,得到一个整数
numE // numF = 5
# 取余
numE % numF = 0
# 乘方
numE ** numF = 100
2. String(字符串)
Python中的字符串用单引号 ' 或者双引号 " 括起来,同时可以使用反斜杠 \ 转义特殊字符
字符串截取语法格式如下:
变量[头下标:尾下标:步长]
索引值从0开始,-1为末尾开始的位置
加号 + 代表着字符串的拼接,星号 * 代表着复制的字数
python
myStr = "hello world!"
print("从第一位开始输出整个字符串: ", myStr[0:])
print("从第二位到第五位输出,第五位取不到: ", myStr[2:5])
print("从头开始输出字符串,步长为2: ", myStr[::2])
print("从头部输出到尾部,不包括尾部: ", myStr[0:-1])
print("反转: ", myStr[::-1])
print("字符串的拼接", myStr + "!")
print("重复打印俩次字符串", myStr * 2)
输出结果:
python
从第一位开始输出整个字符串: hello world!
从第二位到第五位输出,第五位取不到: llo
从头开始输出字符串,步长为2: hlowrd
从头部输出到尾部,不包括尾部: hello world
反转: !dlrow olleh
字符串的拼接 hello world!!
重复打印俩次字符串 hello world!hello world!
反斜杠可以用来转义,使用 r 前缀可以让反斜杠不发生转义(原始字符串)
python
# 会换行输出 i hao,\n代表换行
strA = "\ni hao"
# 会输出 \ni hao,因为r前缀可以让反斜杠不发生转义
strB = r"\ni hao"
3. List(列表)
列表中的元素类型可以不相同,它支持数字、字符串,甚至可以包含列表(即嵌套列表),列表写在方括号[]之间,用逗号分隔开元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
python
变量[头下标:尾下标]
如图所示:

python
myList = ['abc', 234, 2.3, 'hello', "world"]
listB = ['this', 'is']
print("打印整个列表: ", myList)
print("打印第一个元素: ", myList[0])
print("打印第2到3个元素: ", myList[2:4])
print("重复打印两次列表: ", myList * 2)
print("拼接俩个列表: ", myList + listB)
输出结果:
python
打印整个列表: ['abc', 234, 2.3, 'hello', 'world']
打印第一个元素: abc
打印第2到3个元素: [2.3, 'hello']
重复打印两次列表: ['abc', 234, 2.3, 'hello', 'world', 'abc', 234, 2.3, 'hello', 'world']
拼接俩个列表: ['abc', 234, 2.3, 'hello', 'world', 'this', 'is']
列表与字符串不一样的就是,列表中的元素是可以改变的
python
myList[0] = 'haha'
print("改变第一个元素的值之后的列表: ", myList)
myList[1:3] = []
print("将2到3的元素设置为空列表,即删除2到3的元素: ", myList)
输出结果:
改变第一个元素的值之后的列表: ['haha', 234, 2.3, 'hello', 'world']
将2到3的元素设置为空列表,即删除2到3的元素: ['haha', 'hello', 'world']
4. Tuple(元组)
元组与列表类似,不同之处在于元组的元素不能进行修改,元组写在()里,元素之间用逗号隔开。元组中的元素类型也可以不相同:
python
myTuple = ('abc', 234, 3.2, 'hello', 'world')
tupleA = ('this', 'is')
print("输出整个元组: ", myTuple)
print("输出第一个元素: ", myTuple[0])
print("输出索引第一个到第二个: ", myTuple[1:3])
print("输出从索引第2个开始的所有元素: ", myTuple[2:])
print("输出俩次元组: ", myTuple * 2)
print("拼接俩个元组: ", myTuple + tupleA)
输出结果:
python
输出整个元组: ('abc', 234, 3.2, 'hello', 'world')
输出第一个元素: abc
输出索引第一个到第二个: ('abc', 234)
输出从索引第2个开始的所有元素: (234, 3.2, 'hello', 'world')
输出俩次元组: ('abc', 234, 3.2, 'hello', 'world', 'abc', 234, 3.2, 'hello', 'world')
拼接俩个元组: ('abc', 234, 3.2, 'hello', 'world', 'this', 'is')
虽然元组的元素不可改变,但它可以包含可变的对象,比如list列表
构造包含0个或者1个元素的元组比较的特殊
python
# 空元组
tupA = ()
# 一个元素,需要在元素后面添加逗号,如果不添加逗号的话 (42) 会被解释为一个数字,而括号就会被识别为数学运算符中的括号
tupB = (42, )
注意:string、list和tuple都属于 sequence(序列)
5. Set(集合)
Set是一种无序的、可变的数据类型,用于存储唯一的元素。集合中的元素不会重复,并且可以进行交集、并集、差集等等常见的集合操作。
集合使用{}表示,元素之间使用 ,分隔。也可以使用set()函数创建集合
注意:创建一个空集合必须使用set(),而不是{},因为{}创建的是一个空字典
python
mySet = {"learn", "to", "Python", "every", "day"}
print(mySet)
if Python in mySet:
print("Python 在集合当中")
else:
print("Python 不在集合当中")
# set 也可以进行集合运算
setA = set("abcdaaaddcc")
setB = set("cdef")
# 输出 setA 中唯一的元素
print("输出 setA 中唯一的字符: ", setA)
# setA 和 setB 中的差集(在 setA 中但不在 setB 中)
print("setA 和 setB 中的差集: ", setA - setB)
# setA 和 setB 的并集(在 setA 或 setB 中)
print("setA 和 setB 的并集: ", setA | setB)
# setA 和 setB 的交集(同时在 setA 和 setB 中)
print("setA 和 setB 的交集: ", setA & setB)
# setA 和 setB 的对称差集,在 setA 或 setB 中但不同时存在
print("setA 和 setB 的对称差集: ", setA ^ setB)
输出结果:
python
{'every', 'day', 'learn', 'Python', 'to'}
Python 在集合当中
输出 setA 中唯一的字符: {'c', 'd', 'a', 'b'}
setA 和 setB 中的差集: {'a', 'b'}
setA 和 setB 的并集: {'c', 'b', 'f', 'a', 'e', 'd'}
setA 和 setB 的交集: {'c', 'd'}
setA 和 setB 的对称差集: {'b', 'f', 'e', 'a'}
6. Dictionary(字典)
字典是一种映射类型,使用{}标识,是由一个键值对(key:value)的集合,键(key)必须使用不可变类型,并且在同一个字典中唯一。
python
myDict = {"one":"onePoint", 2:"twoPoint", "three":"threePoint"}
print("输出键为'one'的值: ", myDict['one'])
print("输出键为'2'的值: ", myDict[2])
print("输出整个字典: ", myDict)
print("输出字典所有的键: ", myDict.keys())
print("输出字典所有的值: ", myDict.values())
输出结果:
python
输出键为'one'的值: onePoint
输出键为'2'的值: twoPoint
输出整个字典: {'one': 'onePoint', 2: 'twoPoint', 'three': 'threePoint'}
输出字典所有的键: dict_keys(['one', 2, 'three'])
输出字典所有的值: dict_values(['onePoint', 'twoPoint', 'threePoint'])
-
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)
-
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)
二、数据类型转换
Python中的数据类型转换可以分为两种:
- 隐式类型转换 - 自动完成
- 显式类型转换 - 需要使用类型函数来转换
隐式类型转换
在隐式转换中,Python会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。
就比如较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据的丢失。
python
numA = 100
numB = 0.01
numC = numA + numB
print("numA的数据类型为: ", type(numA))
print("numB的数据类型为: ", type(numB))
print("numC的值为: ", numC)
print("numC的数据类型为: ", type(numC))
输出结果:
python
numA的数据类型为: <class 'int'>
numB的数据类型为: <class 'float'>
numC的值为: 100.01
numC的数据类型为: <class 'float'>
Python会自动将较小的数据类型转换为较大的数据类型,避免数据的丢失
显示类型转换
在显示类型转换中,用户将对象的数据类型转换为所需的数据类型,我们使用int()、float()、str()等预定义函数来执行显示类型转换。
如int()强制转换为整型。
python
# 显示类型转换
numA = 100
numBStr = "100"
numC = 10.01
print(f"转换前的numA={numA},numA的类型为{type(numA)}")
print(f"转换前的numBStr={numBStr},numBStr的类型为{type(numBStr)}")
print(f"转换前的numC={numC},numC的类型为{type(numC)}\n")
# int() 强制转换为整型,会丢失精度
numBStr = int(numBStr)
numC = int(numC)
print(f"转换后的numBStr={numBStr},numBStr的类型为{type(numBStr)}")
print(f"转换后的numC={numC},numC的类型为{type(numC)}\n")
#float() 强制转换为浮点型
numA = float(numA)
print(f"转换后的numA={numA},numA的类型为{type(numA)}\n")
# str() 强制转换为字符串类型
numC = str(numC)
print(f"转换后的numC={numC},numC的类型为{type(numC)}\n")
输出结果:
python
转换前的numA=100,numA的类型为<class 'int'>
转换前的numBStr=100,numBStr的类型为<class 'str'>
转换前的numC=10.01,numC的类型为<class 'float'>
转换后的numBStr=100,numBStr的类型为<class 'int'>
转换后的numC=10,numC的类型为<class 'int'>
转换后的numA=100.0,numA的类型为<class 'float'>
转换后的numC=10,numC的类型为<class 'str'>
三、注释
在Python3中,注释分为单行注释和多行注释
单行注释
Python中,单行注释以#开头,后面的文本内容就会被解释器视作注释不会被执行
python
# 这是一行单行的注释
print("Hello Python!")
多行注释
Python中,多行注释以三个单引号'''或者三个双引号"""所包围
python
'''
这是多行注释
这是多行注释
'''
print("Hello Python")
"""
这也是一个多行注释
这也是一个多行注释
"""
print("Hello Python")
注意:
- 如果将多行注释赋值到一个变量中,那么这个注释将不是注释,而是一个字符串
python
myStr = """这是一个字符串"""
- 在多行注释中,不能进行嵌套注释,这是不允许的,这个可能会导致语法的报错。但是可以在多行注释中进行一个单行的注释
python
# 下方这个是一个错误的注释方法
'''
'''
在多行注释中在进行嵌套的注释,这是不被允许的
'''
'''
# 下方这个是一个正确的注释方法
'''
# 在多行注释中,可以使用单行的注释
'''
Docstring文档字符串
文档字符串是一种特殊的注释,可以为函数、类、模块等添加文档说明,他类似于Javadoc
同时Docstring可以通过__doc__属性直接访问,同时也可以使用help函数查看
python
# Docstring 字符串
def add(a, b):
"""返回两数之和"""
return a + b
# 通过__doc__属性进行访问
print(add.__doc__)
help(add)
输出结果:
python
返回两数之和
Help on function add in module __main__:
add(a, b)
返回两数之和
使用inspect模块提取文档
python
def add(a, b):
"""返回两数之和"""
return a + b
print(inspect.getdoc(add))
输出结果:
python
返回两数之和