Python 支持两种类型的强制转换 - 隐式和显式。
1、Python 隐式转换
当任何语言编译器/解释器自动将一种类型的对象转换为另一种类型的对象时,称为自动或隐式转换。
Python 是一种强类型语言。它不允许在不相关的数据类型之间自动进行类型转换。例如,字符串不能转换为任何数字类型。但是,整数可以转换为浮点数。其他语言(如JavaScript)是一种弱类型语言,其中整数被强制转为字符串以进行串联。
为什么会有这种情况呢?因为每种数据类型的内存要求不同。例如,Python 中的整数对象占用 4 个字节的内存,而 float 对象因为它的小数部分则需要 8 个字节。 因此,Python 解释器不会自动将 float 转换为 int,因为它会导致数据丢失。但是,int 可以通过将其小数部分设置为 0 轻松转换为浮点数。
当对 int 和 float 操作数进行任何算术运算时,就会发生隐式 int 到浮点的转换。
假设我们有一个 int 和一个 float 变量
a b
为了执行它们的加法,10 这个整数对象升级到 10.0。虽然它转成一个浮点数,但数值和之前是等效的。现在我们可以执行两个浮点数的加法了。
cab c)
在隐式类型强制转换中,将升级字节大小较小的 Python 对象,以匹配操作中其他对象的较大字节大小。例如,布尔对象首先升级为 int,然后升级为浮点数,然后再和浮点对象进行加减操作。在下面的例子中,我们尝试在浮点数中加上一个布尔对象,请注意 True 等于 1,False 等于 0。
abcabc);
执行结果如下:
11.5