在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
。这时可以使用Optional
和Union
。要使用它们,需从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
)提供信息。