在 Python 中, -> 符号用于 函数注解(Function Annotations),具体表示 返回值的类型提示

基本语法

def 函数名(参数: 参数类型) -> 返回值类型:
    # 函数体
    return 返回值

实际示例

1. 基本用法

def greet(name: str) -> str:
    return f"Hello, {name}"

# 调用
result = greet("Alice")  # result 的类型提示为 str

2. 多种返回值类型

from typing import List, Dict, Optional, Union

# 返回列表
def get_numbers() -> List[int]:
    return [1, 2, 3, 4, 5]

# 返回字典
def get_user() -> Dict[str, str]:
    return {"name": "Bob", "email": "bob@example.com"}

# 可能返回 None
def find_user(user_id: int) -> Optional[str]:
    if user_id == 1:
        return "Alice"
    return None

# 联合类型
def process(value: Union[int, str]) -> Union[int, str]:
    if isinstance(value, int):
        return value * 2
    return value.upper()

3. 复杂类型

from typing import Callable, Tuple

# 返回元组
def get_coordinates() -> Tuple[float, float]:
    return (10.5, 20.3)

# 返回函数
def create_multiplier(n: int) -> Callable[[int], int]:
    def multiplier(x: int) -> int:
        return x * n
    return multiplier

4. 类方法中的使用

class Person:
    def __init__(self, name: str) -> None:
        self.name = name
    
    def greet(self) -> str:
        return f"Hi, I'm {self.name}"
    
    @classmethod
    def create_default(cls) -> 'Person':
        return cls("Default")

重要说明

  1. 仅用于类型提示-> 不会强制执行类型检查,只是提供信息给开发者、IDE 和类型检查工具(如 mypy)

  2. 运行时访问:可以通过 __annotations__ 属性访问

    def add(a: int, b: int) -> int:
        return a + b
    
    print(add.__annotations__)  # {'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}
    
  3. Python 3.10+ 新语法:可以使用更简洁的类型联合

    # Python 3.10+
    def process(value: int | str) -> int | str:
        return value
    
  4. 向后兼容:没有类型提示的代码依然有效,类型提示是可选的

IDE 支持

现代 IDE(如 PyCharm、VSCode)会利用这些类型提示提供:

  • 代码自动补全
  • 参数类型检查
  • 返回值类型提示
  • 重构支持

这种语法让 Python 代码更易于理解和维护,特别适合大型项目或团队协作。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐