类型注解-Python


在Python里,类型注解可让你为变量、函数参数、返回值等添加类型信息。这有助于代码的可读性与可维护性,还能辅助静态类型检查工具找出潜在的类型错误。下面是一些类型注解的常见应用示例:

变量类型注解

你能为变量指定类型,语法是在变量名之后加上冒号与类型。

# 整数类型注解
age: int = 25

# 字符串类型注解
name: str = "Alice"

# 布尔类型注解
is_student: bool = True

# 列表类型注解,列表元素为整数
numbers: list[int] = [1, 2, 3, 4, 5]

# 字典类型注解,键为字符串,值为整数
person: dict[str, int] = {"age": 25, "height": 180}

函数参数与返回值类型注解

在定义函数时,能为参数和返回值添加类型注解。

def add(a: int, b: int) -> int:
    return a + b

result = add(3, 5)
print(result)

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

message = greet("Bob")
print(message)

可选类型与联合类型注解

有时参数或变量可能是多种类型之一,或者可以为None。这时可以使用OptionalUnion。要使用它们,需从typing模块导入。

from typing import Optional, Union

def get_length(s: Optional[str]) -> Union[int, None]:
    if s is not None:
        return len(s)
    return None

length = get_length("Hello")
print(length)

自定义类型注解

你还能定义自己的类型别名,让代码更具可读性。

from typing import List

# 定义一个自定义类型别名
Vector = List[float]

def scale_vector(vector: Vector, scalar: float) -> Vector:
    return [i * scalar for i in vector]

v: Vector = [1.0, 2.0, 3.0]
scaled_v = scale_vector(v, 2.0)
print(scaled_v)

类方法与属性类型注解

在类中也能为属性和方法添加类型注解。

class Person:
    def __init__(self, name: str, age: int):
        self.name: str = name
        self.age: int = age

    def introduce(self) -> str:
        return f"My name is {self.name} and I'm {self.age} years old."

p = Person("Charlie", 30)
print(p.introduce())

需要注意的是,Python的类型注解不会在运行时强制执行类型检查,它主要是给开发者和静态类型检查工具(像mypy)提供信息。