在编程中,类型转换是将一种数据类型的数据转换为另一种数据类型的过程。例如:将 int
数据转换为 str
。
Python 中有两种类型的类型转换。
- 隐式转换 - 自动类型转换
- 显式转换 - 手动类型转换
Python 隐式类型转换
在某些情况下,Python 会自动将一种数据类型转换为另一种。这被称为隐式类型转换。
示例 1:将整数转换为浮点数
让我们看一个示例,Python 提升了较低数据类型(整数)到较高数据类型(浮点数)的转换,以避免数据丢失。
integer_number = 123
float_number = 1.23
new_number = integer_number + float_number
# display new value and resulting data type
print("Value:",new_number)
print("Data Type:",type(new_number))
输出
Value: 124.23 Data Type: <class 'float'>
在上面的示例中,我们创建了两个变量:integer_number 和 float_number,它们分别是 int
和 float
类型。
然后我们将这两个变量相加,并将结果存储在 new_number 中。
正如我们所看到的,new_number 的值为 124.23,并且是 float
数据类型。
这是因为 Python 总是将较小的数据类型转换为较大的数据类型,以避免数据丢失。
注意
- 如果我们尝试将
str
和int
相加,我们会得到TypeError
。例如,'12' + 23
。在这种情况下,Python 无法使用隐式转换。 - Python 对这些类型的情况有一个解决方案,称为显式转换。
显式类型转换
在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。
我们使用内置函数,如 int()、float()、str() 等来执行显式类型转换。
这种类型的转换也称为类型强制转换,因为用户强制转换(更改)了对象的数据类型。
示例 2:使用显式转换将字符串和整数相加
num_string = '12'
num_integer = 23
print("Data type of num_string before Type Casting:",type(num_string))
# explicit type conversion
num_string = int(num_string)
print("Data type of num_string after Type Casting:",type(num_string))
num_sum = num_integer + num_string
print("Sum:",num_sum)
print("Data type of num_sum:",type(num_sum))
输出
Data type of num_string before Type Casting: <class 'str'> Data type of num_string after Type Casting: <class 'int'> Sum: 35 Data type of num_sum: <class 'int'>
在上面的示例中,我们创建了两个变量:num_string 和 num_integer,它们分别具有 str
和 int
类型的值。请注意代码,
num_string = int(num_string)
在这里,我们使用了 int()
对 num_string 执行显式类型转换为整数类型。
在将 num_string 转换为整数值后,Python 能够将这两个变量相加。
最后,我们得到了 num_sum 值,即 35,数据类型为 int
。
要记住的要点
- 类型转换是将对象从一种数据类型转换为另一种数据类型。
- 隐式类型转换由 Python 解释器自动执行。
- Python 在隐式类型转换中避免数据丢失。
- 显式类型转换也称为类型强制转换,对象的數據類型由用户使用预定义函数进行转换。
- 在类型强制转换中,可能会发生数据丢失,因为我们强制对象转换为特定的数据类型。
另请阅读