Python 中的-> 符号

在 Python 中,-> 符号是函数注解(Function Annotations)的一部分,专门用于提示函数的返回值类型。它只是一种 “提示”,Python 解释器不会强制检查类型是否匹配(需要借助 mypy 等工具才能做类型校验),但能极大提升代码的可读性和可维护性。

基础示例

先看一个最简单的示例,直观理解 -> 的用法:
# 函数注解:参数 a、b 是 int 类型,返回值也是 int 类型
def add(a: int, b: int) -> int:
    return a + b

# 测试调用
result = add(3, 5)
print(f"add(3,5) 的结果:{result},类型:{type(result)}")  # 输出:8,类型:<class 'int'>

# 即使传入非 int 类型,Python 也不会报错(注解仅作提示)
result2 = add(3.5, 5.2)
print(f"add(3.5,5.2) 的结果:{result2},类型:{type(result2)}")  # 输出:8.7,类型:<class 'float'>

常见场景示例

下面是几个更贴近实际开发的场景,覆盖不同返回类型:

1. 返回字符串类型

def greet(name: str) -> str:
    """生成问候语,参数是字符串,返回值也是字符串"""
    return f"Hello, {name}!"

print(greet("Python"))  # 输出:Hello, Python!

2. 返回布尔类型

def is_adult(age: int) -> bool:
    """判断是否成年,参数是整数,返回值是布尔值"""
    return age >= 18

print(is_adult(20))  # 输出:True
print(is_adult(17))  # 输出:False

3. 返回列表 / 字典等复杂类型

如果返回值是列表、字典等容器类型,需要从 typing 模块(Python 3.9+ 可直接用内置类型)导入对应注解:
# Python 3.9+ 推荐写法(直接用 list、dict)
def get_user_info(user_id: int) -> dict[str, str | int]:
    """返回用户信息字典,值可能是字符串或整数"""
    return {
        "id": user_id,
        "name": f"User{user_id}",
        "role": "normal"
    }

# Python 3.8 及以下需要从 typing 导入
# from typing import Dict, Union
# def get_user_info(user_id: int) -> Dict[str, Union[str, int]]:
#     ...

print(get_user_info(100))  # 输出:{'id': 100, 'name': 'User100', 'role': 'normal'}

4. 返回 None 类型

如果函数没有返回值(默认返回 None),可以用 -> None 明确标注:
def print_info(msg: str) -> None:
    """打印信息,无返回值"""
    print(f"提示:{msg}")

print_info("函数注解仅作类型提示")  # 输出:提示:函数注解仅作类型提示
print(print_info("测试"))  # 输出:提示:测试 + None

总结

  1. -> 是 Python 函数注解的一部分,仅用于标注函数返回值的类型,参数类型标注用 参数名: 类型
  2. 注解是 “提示性” 的,Python 解释器不会校验类型是否匹配(如传入浮点数给标注为 int 的参数,不会报错)。
  3. 常见用法:-> int(返回整数)、-> str(返回字符串)、-> None(无返回值)、-> list[int](返回整数列表)等,提升代码可读性。
posted @ 2026-03-19 17:12  chenlight  阅读(1)  评论(0)    收藏  举报