飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 第1章 Python简介

    • Python是什么
    • 安装与运行
    • 交互式解释器
    • 注释与编码规范
  • 第2章 变量与数据类型

    • 变量与对象
    • 整数 int
    • 浮点数 float
    • 复数 complex
    • 布尔值 bool
    • 字符串 str
    • 空值 None
    • 类型转换
  • 第3章 运算符与表达式

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 身份与成员运算符
    • 海象运算符
    • 运算符优先级
  • 第4章 流程控制

    • if 语句
    • if-else 语句
    • if-elif-else 语句
    • match-case 语句
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 函数
    • break 与 continue
    • 循环的 else 子句
    • pass 语句
  • 第5章 数据结构

    • 列表创建与索引
    • 列表方法
    • 列表推导式
    • 元组
    • 序列解包
    • 集合
    • 字典创建与访问
    • 字典方法
    • 字典推导式
    • range 对象
  • 第6章 函数

    • 定义函数
    • 位置参数与关键字参数
    • 默认参数
    • 可变参数
    • 解包实参
    • 函数返回值
    • lambda 表达式
    • 文档字符串与注解
    • 作用域与命名空间
    • global 与 nonlocal
  • 第7章 模块与包

    • 模块导入
    • 模块搜索路径
    • 包与相对导入
    • 标准库概览
  • 第8章 文件与输入输出

    • 文件读写
    • 上下文管理器
    • 字符串格式化
    • JSON 与 CSV
  • 第9章 面向对象

    • 类与对象
    • 方法
    • 实例变量与类变量
    • 私有变量
    • 继承
    • 多重继承
    • 魔术方法
    • 属性装饰器
    • 数据类 dataclass
  • 第10章 异常处理

    • 语法错误与异常
    • try-except
    • 异常链与 raise
    • 清理操作
    • 自定义异常
  • 第11章 迭代器与生成器

    • 迭代器协议
    • 生成器
    • 生成器表达式
    • 迭代工具
  • 第12章 高级特性

    • 装饰器
    • 函数式编程
  • 第13章 工程实践

    • 测试与调试
    • 代码质量
    • 虚拟环境

类型转换

Python 是强类型语言,不同类型之间不会自动隐式转换,必须显式调用转换函数。掌握这些函数的精确行为,能避免运行时异常和逻辑错误。

int():转整数

int() 可将符合格式的字符串或数字转为整数:

# 从字符串转换
print(int("42"))         # 42
print(int("  42  "))      # 42,自动去除两端空白
print(int("-42"))        # -42

# 从浮点数转换(向零取整)
print(int(3.7))          # 3
print(int(-3.7))         # -3,不是 -4

# 指定进制解析
print(int("1010", 2))    # 10
print(int("FF", 16))     # 255
print(int("z", 36))      # 35,支持 2-36 进制

常见错误:

# int("3.14")          # ValueError,含小数点不能直接转
# int("")              # ValueError,空字符串
# int("abc")           # ValueError
# int(3+4j)            # TypeError,复数不能转 int

正确做法是先转 float 再转 int:

print(int(float("3.14")))  # 3

float():转浮点数

# 从字符串转换
print(float("3.14"))     # 3.14
print(float("  2.5  "))   # 2.5
print(float("1e3"))       # 1000.0

# 从整数转换
print(float(42))          # 42.0
print(float(0))           # 0.0

常见错误:

# float("")              # ValueError
# float("abc")           # ValueError
# float("3.14.15")       # ValueError
# float(3+4j)            # TypeError

str():转字符串

str() 可将任何对象转为字符串表示:

print(str(42))           # "42"
print(str(3.14))         # "3.14"
print(str(True))         # "True"
print(str(None))         # "None"

str() 面向用户,可读性好;repr() 面向开发者,通常可重新求值:

s = "hello\nworld"
print(str(s))            # hello\nworld(实际换行)
print(repr(s))           # 'hello\nworld'(转义显示)

bool():转布尔值

bool() 根据真值判断规则转换。以下值为 False:

print(bool(0))           # False
print(bool(0.0))         # False
print(bool(""))          # False
print(bool([]))          # False
print(bool({}))          # False
print(bool(None))        # False

其余均为 True,包括非零数字、非空容器:

print(bool(1))           # True
print(bool(-1))          # True,非零即真
print(bool(" "))         # True,非空字符串
print(bool([0]))         # True,非空列表

序列类型转换

# list():转列表
print(list("abc"))       # ['a', 'b', 'c']
print(list((1, 2, 3)))   # [1, 2, 3]
print(list(range(3)))    # [0, 1, 2]

# set():转集合,去重
print(set([1, 2, 2, 3])) # {1, 2, 3}
print(set("hello"))      # {'h', 'e', 'l', 'o'}

# dict():从键值对序列转换
print(dict([("a", 1), ("b", 2)]))  # {'a': 1, 'b': 2}

常见错误:

# list(123)              # TypeError,整数不可迭代
# dict(["ab", "cd"])     # ValueError,元素长度不为 2
# set([[1, 2]])          # TypeError,列表不可哈希

组合转换与异常处理

实际编程中常需要连续转换:

# 用户输入处理
user_input = "  42.5  "
value = float(user_input.strip())
print(int(value))        # 42

# 字符串解析数字列表
data = "1, 2, 3, 4"
numbers = [int(x.strip()) for x in data.split(",")]
print(numbers)           # [1, 2, 3, 4]

用户输入常导致转换失败,应使用异常处理:

def safe_int(value, default=0):
    try:
        return int(value)
    except (ValueError, TypeError):
        return default

print(safe_int("42"))      # 42
print(safe_int("abc"))     # 0
print(safe_int(None))      # 0

类型转换是数据处理的日常操作。核心原则:明确转换规则,处理异常输入,避免隐式假设。对于用户输入,永远先做验证和清理,再转换。

上一页
空值 None