Python数据类型

2025年3月24日 | 阅读 17 分钟

在 Python 中,数据类型用于定义变量可以存储的数据种类。它们决定了数据存储方式以及可以对其执行的操作。Python 是一种动态类型编程语言,允许程序员不显式声明变量的数据类型,而是根据赋给它的值自动确定。

让我们看一个下面的例子

示例

立即执行

输出

10
int

在此,我们没有显式声明变量 `var_1` 的数据类型。Python 已自动将其确定为 'int'。

在接下来的教程中,我们将通过各种示例学习 Python 中使用的数据类型及其应用。

理解 Python 中的数据类型

Python 数据类型是根据其行为和特征对不同数据项进行的分类。数据类型表示变量可以存储的值以及我们可以对这些值执行的操作。

Python Data Types

Python 中的一切都是对象。从这个角度来看,我们可以认为数据类型是类,变量是这些类的实例。Python 中有几种常用的数据类型:

序号。数据类型示例
1数字类型int(整数)、float(浮点数)、complex(复数)
2序列类型str(字符串)、list(列表)、tuple(元组)、range(范围)
3集合类型set(集合)、frozenset(不可变集合)
4映射类型dict
5布尔类型bool
6二进制类型bytes(字节)、bytearray(字节数组)、memoryview(内存视图)
7None 类型NoneType

在接下来的章节中,我们将通过各种示例深入探讨这些 Python 数据类型。

数值数据类型

Python 中的数字数据类型用于以数字形式存储数据。我们可以用不同的方式描述数字,包括整数、浮点数或复数。

主要有三种类型的数字数据类型:

序号。数值数据类型描述
1int存储长度不限的有符号整数
2float存储具有小数点的浮点数,精度达 15 位小数
3complex存储复数

让我们详细了解这些数字数据类型。

1. 整数 (int)

整数是指没有小数或分数部分的整数(正数、负数或零)。例如,15、-7、12、0、-125、268 等。整数值由 'int' 类表示。在 Python 中,整数的长度没有限制。值可以是任意长度,并且可以达到系统可用内存的最大值。

让我们看一个示例,说明如何在 Python 中声明一个整数。

示例

立即执行

输出

Data Type of 16 = <class 'int'>
Data Type of -21 = <class 'int'>
Data Type of 0 = <class 'int'>

说明

在上面的代码片段中,我们初始化了几个带有整数值的变量。然后,我们使用 `type()` 方法返回它们的类型并打印给用户。结果,我们可以观察到所有初始化的变量都属于 'int' 类。

2. 浮点数 (float)

浮点数是指可以带有小数点或以科学计数法表示的数字。例如,14.523、3.14、1.5e3 等。在 Python 中,一个称为 'float' 的类用于存储可以为正数、负数或零的小数。它支持科学计数法(例如,1.6e4 = 16000.0)。float 类遵循 IEEE 754 浮点数标准,其精度限制为 15 位小数。

让我们看一个示例,说明如何在 Python 中声明一个浮点数。

示例

立即执行

输出

Data Type of 1.72 = <class 'float'>
Data Type of -0.05 = <class 'float'>
Data Type of 0.0 = <class 'float'>
Data Type of 16000.0 = <class 'float'>

说明

在上面的代码片段中,我们初始化了几个带有浮点数值的变量。然后,我们使用 `type()` 方法返回它们的类型并打印给用户。结果,我们可以观察到所有初始化的变量都属于 'float' 类。

3. 复数 (complex)

复数是由实部和虚部组成的数。它以以下形式书写:

其中

  • a = 实部。它可以是浮点数或整数。
  • b = 虚部。它可以是浮点数或整数。
  • j = 表示 √(-1)。它是 Python 中使用的虚数单位。

在 Python 中,复数存储在一个称为 'complex' 的类中。

让我们看一个示例,说明如何在 Python 中声明一个复数。

示例

立即执行

输出

Data Type of (3+5j) = <class 'complex'>
Data Type of (-3.4+2.8j) = <class 'complex'>
Data Type of (-5-1.9j) = <class 'complex'>
Data Type of (-6+0j) = <class 'complex'>

说明

在上面的代码片段中,我们用一些复数初始化了几个变量。然后,我们使用 `type()` 方法返回它们的类型并打印给用户。结果,我们可以观察到所有初始化的变量都属于 'complex' 类。

序列数据类型

Python 中的序列数据类型用于以有序的方式存储多个元素。Python 中主要有三种序列数据类型:

序号。

序列数据类型

描述

1

list

有序、可变、异构的元素集合

2

tuple

有序、不可变的元素集合

3

str

字符序列

让我们详细了解这些序列数据类型。

1. 列表 (list)

类似于其他编程语言中的数组,Python 中的列表是数据元素的有序集合。它可以同时存储不同数据类型的元素,用逗号分隔。列表本质上是可变的,这意味着我们可以随时修改其元素。

让我们看一个示例,演示如何在 Python 中初始化一个列表。

示例

立即执行

输出

Initialized List: [1, 0.5, 'hello', (1+5j), 170.0, -12, 'welcome']
Data Type: <class 'list'>

说明

在上面的代码片段中,我们初始化了一个包含混合数据类型元素的列表。然后,我们打印列表供参考,并使用 `type()` 方法返回它们的类型并打印给用户。结果,我们可以观察到初始化的列表可以同时存储多种数据类型,并属于 'list' 类。

3. 元组 (tuple)

元组是与列表一样的数据元素的有序序列。两者之间的唯一区别在于元组本质上是不可变的。这意味着一旦创建,我们就不能修改元组的元素。

在 Python 中,我们使用括号 '()' 来存储元组中的元素。让我们看一个示例,演示如何在 Python 中初始化一个元组。

示例

立即执行

输出

Initialized tuple: (1, 0.5, 'hello', (1+5j), 170.0, -12, 'welcome')
Data Type: <class 'tuple'>

说明

在上面的代码片段中,我们初始化了一个包含混合数据类型元素的元组。然后,我们打印元组供参考,并使用 `type()` 方法返回它们的类型并打印给用户。结果,我们可以观察到初始化的元组可以同时存储多种数据类型,并属于 'tuple' 类。

3. 字符串 (str)

字符串是用单引号 (') 或双引号 (") 括起来的字符序列。与元组类似,字符串本质上也是不可变的。在 Python 中,字符串使用 'str' 类表示。

让我们看一个示例,演示如何在 Python 中初始化一个字符串。

示例

立即执行

输出

String 1 : TpointTech
Data Type of String 1: <class 'str'>
String 2 : I love learning Python from TpointTech
Data Type of String 2: <class 'str'>

说明

在上面的代码片段中,我们定义了两个变量 `str_1` 和 `str_2` 并用文本初始化了它们。然后,我们打印了字符串,并使用 `type()` 方法返回它们的类型并打印给用户。结果,打印的文本属于 'str' 类。

4. 范围 (range)

此外,还有一种属于序列数据类型的数据类型。这种数据类型称为范围。范围是 Python 中用于表示数字序列的对象。

让我们看一个示例,说明如何在 Python 中初始化范围。

示例

立即执行

输出

Range: range(3, 26, 2)
Range as List: [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25]
Data Type: <class 'range'>

说明

在上面的代码片段中,我们使用 `range()` 函数创建了一个从 3 到 26(步长为 2)的范围。然后,我们打印了范围供参考。我们还将范围打印为列表,显示生成序列的所有元素。最后,我们打印了它的数据类型。结果,我们可以观察到它属于 'range' 类。

集合数据类型

Python 中的集合数据类型用于存储无序的唯一元素集合。

通常有两种属于集合数据类型的数据类型。

序号。集合数据类型描述
1set无序、唯一、可变、无索引的元素集合
2frozenset无序、唯一、不可变、无索引的元素集合

让我们详细了解这些集合数据类型。

1. set(集合)

Python 中的集合是指无序、可变、无索引的唯一数据元素集合。集合在存储唯一值和执行各种数学运算(如并集、交集和差集)方面很有用。

为了在 Python 中创建集合,我们需要使用 {} 或 `set()` 构造函数。让我们看一个示例,说明如何在 Python 中初始化集合。

示例

立即执行

输出

Set 1: {'mango', 'orange', 'banana', 'apple'}
Data type of Set 1: <class 'set'>
Set 2: {'lemon', 'tomato', 'potato', 'ginger'}
Data type of Set 2: <class 'set'>

说明

在上面的示例中,我们使用不同的方法初始化了两个集合。第一个使用 {} 方括号初始化,另一个使用 `set()` 构造函数初始化。然后,我们打印了两个集合的元素及其数据类型。结果,我们可以观察到两个集合都属于 'set' 类。

2. frozenset(不可变集合)

在 Python 中,`frozenset()` 函数用于返回一个 frozenset 对象。此对象是一种不可变的、无序的数据类型。frozenset 由唯一项组成,使其与 set 数据类型相似;但是,它像元组一样是不可更改的。

让我们看一个示例,说明如何在 Python 中初始化 frozenset。

示例

立即执行

输出

Frozenset: frozenset({'mango', 'orange', 'berries', 'apple'})
Data Type: <class 'frozenset'>

说明

在上面的示例中,我们将一个列表初始化为可迭代对象。然后,我们将 `frozenset()` 函数传递给列表。然后,我们打印了返回的对象及其数据类型。结果,我们可以观察到 frozenset 对象已成功创建,并且它属于 'frozenset' 类。

映射数据类型 - 字典 (dict)

在 Python 中,我们可以使用字典以键值对的形式存储元素。字典是元素的有序集合,其中唯一的标识符与每个值相关联。

让我们看一个在 Python 中初始化字典的示例。

示例

立即执行

输出

Person Details:
 {'name': 'Mark', 'age': '25', 'gender': 'Male'}
Data Type: <class 'dict'>

说明

在上面的示例中,我们创建了一个字典并打印了它的数据类型供参考。这里,'name'、'age' 和 'gender' 是键,分别对应值 'Mark'、'25' 和 'Male'。

布尔数据类型 (bool)

布尔是 Python 中一种内置的数据类型,它有两个常量值:

  • True:布尔值 'True' 表示 1,当表达式或对象被认为是真实时返回。
  • False:布尔值 'False' 表示 0,当表达式或对象被证明为假时返回。

我们还可以评估非布尔对象在布尔上下文中的情况,并将它们识别为 True 或 False。一个称为 'bool' 的类用于在 Python 中存储布尔对象。

注意:Python 区分大小写;因此,如果布尔值(True 和 False)以小写形式(例如,true、false)传递,它将返回错误。

让我们看一个 Python 中布尔数据类型的示例。

示例

立即执行

输出

Value of a: True
Data Type of a: <class 'bool'>
Value of b: False
Data Type of b: <class 'bool'>

说明

在上面的示例中,我们分别用 True 和 False 初始化了两个变量 a 和 b。然后,我们打印它们供参考,并使用 `type()` 函数返回它们的数据类型。结果,我们可以观察到变量 a 和 b 属于 'bool' 类。

二进制数据类型

Python 提供二进制数据类型以处理原始二进制数据。这些数据类型包括:

序号。二进制数据类型描述
1bytes不可变的字节序列
2bytearray可变的字节序列
3memoryview对二进制数据的有效访问

让我们详细了解这些二进制数据类型。

1. bytes(字节)

bytes 数据类型是字节的不可变序列,其值范围从 0 到 255。它在处理二进制文件、网络通信或加密函数时很有用。

让我们看一个 Python 中 bytes 数据类型的示例。

示例

立即执行

输出

Value of Object 1: b'NOPQR'
Data Type of Object 1: <class 'bytes'>

说明

在上面的示例中,我们使用 `bytes()` 函数使用整数列表(分别为 78、79、80、81 和 82)创建了一个字节对象。然后,我们打印了初始化的对象及其类型。结果,我们可以观察到对象的输出是 b'NOPQR',属于 'bytes' 类。

2. bytearray(字节数组)

与 bytes 不同,bytearray 数据类型是字节的可变序列,允许就地修改二进制数据。

为了创建 bytearray 类的对象,我们将给定的可迭代对象传递给内置的 `bytearray()` 函数。

让我们看一个 Python 中 bytearray 数据类型的示例。

示例

立即执行

输出

Value of Object 1: bytearray(b'NOPQR')
Data Type of Object 1: <class 'bytearray'>

说明

在上面的示例中,我们使用 `bytearray()` 函数使用整数列表(分别为 78、79、80、81 和 82)创建了一个字节数组对象。然后,我们打印了初始化的对象及其类型。结果,我们可以观察到对象的输出是 b'NOPQR',属于 'bytearray' 类。

3. memoryview(内存视图)

memoryview 是一种数据类型,用于在不复制的情况下提供一种轻量级且有效的方式来访问二进制数据。这种数据类型对于性能至关重要的大型数据操作很有用。

让我们看一个 Python 中 memoryview 数据类型的示例。

示例

立即执行

输出

Value of Object 2: <memory at 0x7ebcf57bf640>
Data Type of Object 2: <class 'memoryview'>

说明

在上面的示例中,我们使用 `bytearray()` 函数使用整数列表(分别为 78、79、80、81 和 82)创建了一个字节数组对象。然后,我们使用 `memoryview()` 函数将字节数组对象转换为 memoryview 对象。然后,我们打印了对象的值及其类型。结果,我们可以观察到对象的输出是 <memory at 0x7ebcf57bf640>,属于 'memoryview' 类。

None 类型 (NoneType)

Python 还提供了一种特殊的数据类型,称为 NoneType。这种数据类型仅包含一个值 - None。它用于表示 Python 中的缺失值、函数返回值和占位符。

为了创建 NoneType 类的对象,我们可以简单地将一个变量初始化为 None 作为其值。

让我们看一个显示 'NoneType' 类对象的示例如下。

示例

立即执行

输出

Value of var_1: None
Data Type of var_1: <class 'NoneType'>

说明

在上面的示例中,我们将变量 `var_1` 初始化为 None 作为其值。然后,我们打印它供参考,并使用 `type()` 函数返回其类型。结果,我们可以观察到变量 `var_1` 的值为 None,并且它属于 'NoneType' 类。

Python中的类型转换

Python 是一种动态类型语言,允许我们不显式定义变量的数据类型。但是,Python 为我们提供了将一种数据类型转换为另一种数据类型的能力。

将一种数据类型转换为另一种数据类型的过程称为类型转换。Python 提供两种类型转换变量的方法:

1. 隐式类型转换(自动): Python 会自动将较小的数据类型转换为较大的数据类型。

示例

立即执行

输出

6 => <class 'int'>
3.7 => <class 'float'>
6 + 3.7 = 9.7
9.7 => <class 'float'>

说明

在上面的示例中,我们初始化了两个不同类型(int 和 float)的变量 p 和 q。然后,我们将它们相加并将它们的和存储在另一个变量 r 中。然后,我们打印了它们的数据类型。结果,我们可以观察到 r 被隐式转换为 'float'。

2. 显式类型转换(手动): 程序员使用 Python 的内置函数将一种数据类型转换为另一种数据类型。

示例

立即执行

输出

14.0
7
7295
<class 'list'>
<class 'tuple'>

说明

在上面的示例中,我们使用 `float()`、`int()`、`tuple()` 等内置函数来将传入变量的数据类型转换为所需的数据类型。

要了解有关类型转换的更多信息,请访问:Python - 类型转换

结论

理解 Python 数据类型对于编写高效的代码很重要。这些内置数据类型允许开发人员有效地存储和操作各种数据。掌握它们将有助于改进编程实践和解决问题的能力。

Python 数据类型 - 选择题

1. 以下代码的输出将是什么?

  1. <class 'float'>
  2. <class 'str'>
  3. <class 'int'>
  4. <class 'list'>
 

答案:C) <class 'int'>


2. 以下变量的数据类型是什么?

  1. int
  2. float
  3. complex
  4. bool
 

答案:B) float


3. 以下哪种是 Python 中可变的数据类型?

  1. tuple
  2. str
  3. list
  4. frozenset
 

答案:C) list

解释:列表是可变的,这意味着它们可以在创建后进行修改。


4. 下列代码的输出是什么?

  1. <class 'float'>
  2. <class 'int'>
  3. <class 'complex'>
  4. <class 'tuple'>
 

答案:C) <class 'complex'>


5. 创建 Python 集合的正确语法是什么?

  1. {5, 4, 3}
  2. [5, 4, 3]
  3. (5, 4, 3)
  4. set[5, 4, 3]
 

答案:A) {5, 4, 3}

解释:花括号 {} 用于定义集合,除非创建空集合,这时需要使用 set()。


下一主题Python 数字