📅  最后修改于: 2023-12-03 15:34:13.053000             🧑  作者: Mango
在 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