📜  python 示例中的隐式转换 - Python (1)

📅  最后修改于: 2023-12-03 15:34:13.053000             🧑  作者: Mango

Python 示例中的隐式转换

在 Python 中,当不同类型的变量进行运算或比较时,会发生隐式转换。这种转换是由 Python 解释器自动进行的,不需要程序员显式地进行类型转换。

数字类型的隐式转换

Python 支持整型、浮点型、复数型等多种数字类型。在进行数字运算时,Python 解释器会自动将两个数字进行类型转换,使它们可以进行相同类型的运算。

整型和浮点型

当整型和浮点型进行运算时,整型会自动转换为浮点型。

a = 1
b = 2.0
c = a + b  # c 的类型为浮点型
整型和复数型

当整型和复数型进行运算时,整型会自动转换为复数型,虚部为 0。

a = 1
b = 2 + 3j
c = a + b  # c 的类型为复数型,实部为 3,虚部为 3
字符串类型的隐式转换

Python 中的字符串类型是不可变类型,也支持隐式转换。

字符串和数字类型

字符串类型和数字类型进行 + 运算时,会发生类型错误。但是,字符串类型和数字类型进行 * 运算时,字符串类型会自动重复多次。

a = 'hello'
b = 3
c = a * b  # c 的值为 'hellohellohello'
字符串和布尔类型

空字符串在布尔类型中被认为是假值,非空字符串被认为是真值。

a = ''
if not a:
    print('字符串为空')
通过运算符重载实现隐式转换

在 Python 中,我们可以通过运算符重载实现隐式转换。比如,可以通过实现 __add__ 方法,将一个自定义类型与数字类型进行相加运算。

class MyClass:
    def __init__(self, value):
        self.value = value

    def __add__(self, other):
        if isinstance(other, int):
            return MyClass(self.value + other)
        else:
            raise TypeError('不能与非整型相加')

num = MyClass(3)
num = num + 4