CodeGym /课程 /Python SELF ZH /数据类型转换

数据类型转换

Python SELF ZH
第 5 级 , 课程 2
可用

2.1 确定类型

有时候在某些代码中,我们不知道变量中存储的是什么数据。为此,Python 提供了 函数 type(),用于确定对象的类型。

这是一个内置函数,会返回指定对象的类型。这在调试、数据验证或者基于数据类型实现逻辑时都挺有用。

type() 函数的工作原理

当你调用 type(x) 时,Python 会返回一个特殊对象 type,它表示变量 x 的类型。例如:


x = 1
print(type(x))  # 输出: <class 'int'>

x = "你好"
print(type(x))  # 输出: <class 'str'>

x = [1, 2, 3]
print(type(x))  # 输出: <class 'list'>

注意,上面输出的会包含 class 这个词。这是因为,即便是 int, str, list 等类型,它们其实也是类,只不过是 Python 的内置类,不需要我们自己定义,Python 默认就提供了。

实用场景

type() 函数在以下场景中经常使用:

  • 根据变量的类型执行不同的操作。
  • 在函数或方法中检查参数类型是否正确。

如果你想确保变量中存储的是一个数字,可以写如下代码:


arg = 123
if type(arg) == int:
    print(arg + 10)  # 输出: 133               

更实际的例子是,检查变量中存储的对象类型:


arg = "123"
if type(arg) == int:
    print(arg + 10)  # 不会执行,因为 arg 是字符串
elif type(arg) == str:
    print(arg + " world")  # 输出: 123 world
else:
    print("未知类型")               

2.2 显式类型指定

在 Python 中,可以通过类型转换函数明确指定对象的类型,比如 int()float()str()tuple() 等。这些函数可以将一种类型的数据转换为另一种类型,比如处理用户输入、执行数学操作或者处理字符串和数据集合时特别方便。

类型转换函数示例

int(): 将数据转换为整数。我们已经多次接触过这个函数,它可以将表示数字的字符串转换为对应的整数。


num = int("123")  # num 现在是整数 123               

float(): 我们也很熟悉这个函数,用于将数据转换为浮点数。


num = float("123.45")  # num 现在是 123.45               

str(): 将任意 Python 对象转换为字符串。


s = str(10.5)  # s 现在是 '10.5'               

tuple(): 将序列转换为元组。


t = tuple([1, 2, 3])  # t 现在是 (1, 2, 3)               

list(): 将可迭代对象(比如字符串或元组)转换为列表。可迭代对象是可以被逐一遍历的对象,比如字符串、列表或元组。


l = list("abc")  # l 现在是 ['a', 'b', 'c']               

dict(): 从键值对序列创建字典。


d = dict([(1, 'a'), (2, 'b')])  # d 现在是 {1: 'a', 2: 'b'}

关于字典和元组我们会稍后讲解,不过我想你已经大概明白了:如果需要明确指定某种类型,可以使用上述这些函数。

2.3 类型转换

在 Python 中,显式类型转换允许开发者控制并改变变量的数据类型。这在保证数据兼容性、处理用户输入或从文件读取数据时特别有用。本质上,类型转换和类型强制指的是同一个东西——把一个对象的类型改为另一种类型。

我们之前已经接触过一些显式类型转换的方法。在 Python 中,可以通过内置函数,比如 int()float()str()tuple()list()dict()set() 来实现。

为了巩固理解,再来看一些例子:

函数 描述 示例输入 示例输出
int() 转换为整数 int("10") 10
float() 转换为浮点数 float("20.5") 20.5
str() 转换为字符串 str(15) "15"
tuple() 转换为元组 tuple([1, 2, 3]) (1, 2, 3)
list() 转换为列表 list("abc") ['a', 'b', 'c']
dict() 从键值对创建字典 dict([(1, 'one'), (2, 'two')]) {1: 'one', 2: 'two'}
set() 从列表创建集合 set([1, 1, 2, 2, 3, 3]) {1, 2, 3}

使用场景

显式类型转换在很多场景中都有应用,包括:

  • 处理用户输入: 确保输入的数据符合预期的数据类型。
  • 数据互操作性: 当来自不同来源或 API 的数据需要合并或比较时使用。
  • 错误处理: 在执行操作前转换数据为合适的类型,避免运行时错误。

最佳实践和注意事项

显式类型转换需要谨慎使用,避免数据丢失(比如将 float 转换为 int 时)或者转换错误(比如尝试将非数字字符串转换为数字)。

还要注意有些转换可能不那么显而易见,可能导致意料之外的结果,因此需要仔细检查数据。例如,将 int 转换为 bool 及其反向操作可能带来一些“意外的惊喜” :)

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION