跳到主要内容

Python 类型转换

类型转换是一种常见任务,Python 提供了很多简化这种工作的内置函数。

显式转换

将整数转换为浮点数

>>> float(3)
3.0

将字符串转换为浮点数

>>> float('3.2')
3.2

将整数转换为字符串

>>> str(85)
'85'

将浮点数转换为字符串

>>> str(-9.78)
'-9.78'

将浮点数转换为整数

这种转换稍微有点麻烦,因为你必须决定如何处理浮点数的小数部分。函数 int(x) 将小数部分删除,而 round(x) 采用标准圆整方式。

>>> int(8.54)
8
>>> round(8.54)
9
>>> round(8.5)
8
提示

圆整策略:四舍六入五成双,这是计算机上圆整数字的标准方式。更多细节请参考 Rounding

对于大多数应用程序,使用 int(x)float(x)round(x) 就能满足数值转换需求。然而,为处理更具体的转换,Python 模块 math 提供了更多小数部分删除的函数:math.trunc(x)math.ceil(x)math.floor(x)

将字符串转换为数字

这很容易,只需使用函数 int(s)float(s) 即可。

>>> int('5')
5
>>> float('6')
6.0

注意:使用 int(s)float(s) 将字符串转换为整数和浮点数时,是假定字符串看起来像 Python 整数或浮点数,如果不是这样,将出现一条错误消息,指出不能执行转换。比如:

>>> int('10.2')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '10.2'
>>> float('6s')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '6s'

如果用科学记数法表示浮点数的字符串则可以转换:

>>> float('6e-02')
0.06

隐式转换

有时候 Python 会自动在数值类型之间转换,而不要求显式地调用转换函数。比如:

>>> 89 * 1.2
106.8

这里自动将 89 转换为 89.0,再将其与 1.2 相乘。一般而言,表达式同时包含整数和浮点数时,Python 会自动将整数转换为浮点数。