在 Python 中,数据类型转换(Type Conversion)分为 隐式转换显式转换。以下是详细讲解:


一、隐式类型转换

隐式转换是 Python 自动完成的,通常发生在不丢失精度的情况下。例如:

# 隐式转换示例
int_num = 10  # 整数
float_num = 2.5  # 浮点数

result = int_num + float_num
print(result)  # 12.5
print(type(result))  # <class 'float'>
  • 规则:小范围类型(如 int)自动转换为大范围类型(如 float)。
  • 优点:方便且安全,但不能显式控制。

二、显式类型转换

显式类型转换需要使用内置函数完成,主要有以下几种常用情况:

1. 转换为整数:int()

将其他类型转换为整数。

用法:
  • 浮点数会取整(舍去小数部分)。
  • 字符串需表示数字(支持十进制、二进制等格式)。
  • 布尔值中 True 转为 1False 转为 0
示例:
print(int(3.9))          # 3
print(int("10"))         # 10
print(int(True))         # 1
print(int(False))        # 0
# print(int("abc"))      # 抛出 ValueError

2. 转换为浮点数:float()

将其他类型转换为浮点数。

用法:
  • 整数直接转为浮点数。
  • 字符串需表示数字。
  • 布尔值 True 转为 1.0False 转为 0.0
示例:
print(float(5))          # 5.0
print(float("3.14"))     # 3.14
print(float(True))       # 1.0
print(float(False))      # 0.0

3. 转换为字符串:str()

将其他类型转换为字符串。

用法:
  • 所有类型都可以转换为字符串。
示例:
print(str(100))          # "100"
print(str(3.14))         # "3.14"
print(str(True))         # "True"
print(str([1, 2, 3]))    # "[1, 2, 3]"

4. 转换为布尔值:bool()

将其他类型转换为布尔值。

转换规则:
  • 数值类型:00.0 转为 False,其他为 True
  • 容器类型:空容器(如空列表、空字符串)为 False,非空为 True
示例:
print(bool(0))           # False
print(bool(1))           # True
print(bool(""))          # False
print(bool("Hello"))     # True
print(bool([]))          # False
print(bool([1, 2, 3]))   # True

5. 转换为容器类型

  • 列表:list()
    转换为列表类型。

    print(list("abc"))      # ['a', 'b', 'c']
    print(list((1, 2, 3)))  # [1, 2, 3]
    
  • 元组:tuple()
    转换为元组类型。

    print(tuple("abc"))     # ('a', 'b', 'c')
    print(tuple([1, 2, 3])) # (1, 2, 3)
    
  • 集合:set()
    转换为集合类型(会去重)。

    print(set("aabbcc"))    # {'a', 'b', 'c'}
    print(set([1, 2, 2, 3])) # {1, 2, 3}
    
  • 字典:dict()
    转换为字典类型(需提供键值对)。

    print(dict([("a", 1), ("b", 2)]))  # {'a': 1, 'b': 2}
    

6. 转换为字节:bytes()

将字符串或其他类型转换为字节类型。

示例:
print(bytes("hello", "utf-8"))  # b'hello'
print(bytes([72, 101, 108, 108, 111]))  # b'Hello'

三、注意事项

  1. 转换失败时会抛出异常

    print(int("abc"))  # ValueError: invalid literal for int()
    
  2. 不支持直接转换的类型需要中间步骤
    比如将列表转换为整数,需要先转换为字符串,再转整数。

    lst = [1, 2, 3]
    print(int("".join(map(str, lst))))  # 123
    
  3. None 的处理
    None 转换为布尔值是 False,不能直接转换为其他类型。


总结:在 Python 中,数据类型转换灵活多样,但需要根据实际场景选择合适的方式,避免因类型不匹配导致的错误。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐