Type Conversion

Python,类型转换

图片

在编程中,类型转换是将一种类型的数据转换为另一种类型的过程。例如:将 int 数据转换为 str。

图片

Python中有两种类型的类型转换。

  • 隐式转换-自动类型转换

  • 显式转换-手动类型转换

01

Python 隐式类型转换

在某些情况下,Python 会自动将一种数据类型转换为另一种数据类型。

这称之为隐式类型转换。

图片

图片

将整数转换为浮点数

在我们对两种不同类型的数据进行运算时,Python 会自动将较低数据类型(整型)转换为较高数据类型(浮点型)以避免数据丢失。

图片

让我们看一个示例:

输入

integer_number = 123float_number = 1.23
new_number = integer_number + float_number
# 显示新值和结果的数据类型print("Value:",new_number)print("数据类型:",type(new_number))

输出

Value: 124.23数据类型: <class 'float'>
  • 在上面的例子中,我们创建了两个变量:int 类型的 integer_number 和 float 类型的 float_number。

  • 然后我们将这两个变量相加,并将结果存储在 new_number 中。

  • 可以看到,new_number 的值为 124.23,类型为float。

  • Python 总是会自动将较小的数据类型转换为较大的数据类型,以避免数据的丢失。

图片

【tip】:

  • 如果我们尝试用 str 和 int 进行运算,那么运算结果会报错,输出 TypeError,例如,` 12 ` + 23。Python 在这种情况下就不会自动隐式转换。

图片

  • Python 为这些类型的情况提供了一个解决方案,称为显式转换。

图片

02

Python 显示类型转换

显式类型转换也称为手动类型转换,指的是用户将对象的数据类型强制转换(更改)为所需的数据类型。

图片

我们可以使用内置函数,如int()、float()、str()等来执行显式类型转换。

图片

int( ) 强制转换为整型

01

输入

integer_number = 123float_number = 1.23string_number = "3"
new_number = int(integer_number)print("integer_Value:",new_number)
new_number = int(float_number)print("float_Value:",new_number)
new_number = int(string_number)print("string_Value:",new_number)

02

输出

integer_Value: 123float_Value: 1string_Value: 3

在上面的例子中,不难看出,当我们将 float 类型转换为 int 类型的时候,是直接取整抹零(向下取整),输出整数部分,而不是四舍五入。

另外,我们还需要注意的是 int() 函数不能转换 str 类型的小数和文本,一旦尝试则会输出 ValueError。

图片

float( ) 强制转换为浮点型

01

输入

integer_number = 123float_number = 1.23string_1 = "3"string_2 = "3.14"
new_number = float(integer_number)print("integer_Value:",new_number)
new_number = float(float_number)print("float_Value:",new_number)
new_number = float(string_1)print("string1_Value:",new_number)
new_number = float(string_2)print("string2_Value:",new_number)

02

输出

integer_Value: 123.0float_Value: 1.23string1_Value: 3.0string2_Value: 3.14

在上面例子中,当转换为 float 类型时,没有小数部分的数,会自动在末尾添一位小数 0。

图片

而且,我们还可以发现,用 float() 函数可以转换 str 类型的小数,但是不能转换 str 类型文本,一旦尝试则会输出 ValueError。

str( ) 强制转换为字符串型

01

输入

integer_number = 123float_number = 1.23string_1 = "python 3.8"
new_number = str(integer_number)print("integer_Value:",new_number)
new_number = str(float_number)print("float_Value:",new_number)
new_number = str(string_1)print("string1_Value:",new_number)

02

输出

integer_Value: 123float_Value: 1.23string1_Value: python 3.8

图片

总结:

  1. str():任何类型转成字符串类型都没有限制。

  2. int():float 类型转 int 类型,只保留整数部分,文本与小数类型的字符串不能转成 int 类型。

  3. float():文本类型的字符串不能转成 float 类型。

图片

使用显式转换将字符串和整数相加

num_string = '12'num_integer = 23
print("类型转换前的数据类型:",type(num_string))
# 类型转换num_string = int(num_string)
print("类型转换后的数据类型:",type(num_string))
num_sum = num_integer + num_string
print("Sum:",num_sum)print("num_sum 的数据类型:",type(num_sum))

输出

类型转换前的数据类型: <class 'str'>类型转换后的数据类型: <class 'int'>Sum: 35num_sum 的数据类型: <class 'int'>

解析

在上面的例子中,我们创建了两个变量:num_string 和 num_integer,分别为 str 类型和 int 类型。

num_string = int(num_string)

在这里,我们使用 int() 函数手动地将 num_string 转换为整型。

num_string 转换为整型后,Python 就能够将这两个变量相加了。

因此,我们得到 num_sum 的值 —— 35,数据类型为 int。

图片

更多类型转换

函数 描述
int(x[,base]) 将一个数值或字符串转换为整数类型。
float(x) 将一个字符串或整数转换为浮点数类型。
complex(real [,imag]) 创建一个复数。
str(x) 将指定的对象转换为字符串类型。
chr(x) 将一个整数转换为一个字符。
eval(str) 用来执行一个字符串表达式,并返回表达式的值。
list(s) 将一个可迭代的对象转换为列表类型。
tuple(s) 将一个可迭代的对象转换为元组类型。

dict(d)

将一个包含键值对的元组列表转换为字典类型。
set(s) 将一个可迭代的对象转换为可变集合类型。
frozenset(s) 将一个可迭代的对象转换为不可变集合。
repr(x) 将指定的对象转换为表达式字符串。
ord(x) 将一个字符转换为它的整数值。
hex(x) 将一个整数转换为一个十六进制字符串。

oct(x)

将一个整数转换为一个八进制字符串。

bin(x) 将一个整数转换为一个二进制字符串。

【tip】:中括号[ ]所包含的部分表示可写可不写,根据自己的需求来。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐