当函数需要接收一个结构化的数据时,使用模糊的字典作为参数会降低代码的清晰度。
def print_point(point):
print(f'x = {point["x"]}')
print(f'y = {point["y"]}')
这里,point 参数的结构是隐晦的,调用者必须查看函数内部实现才能知道如何传参。
dataclass 装饰器可以自动为类生成 __init__、__repr__ 等方法,极大地简化了纯数据类的定义。
用它来定义数据结构,能让函数接口一目了然。
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
def print_point(point: Point):
print(f'x = {point.x}')
print(f'y = {point.y}')
print_point(Point(x=10, y=20))
函数签名 def print_point(point: Point) 直接指明了所需的数据结构,无需额外注释。
此外类型注解让 IDE 能提供智能补全,并方便进行静态类型检查。
↶ 返回首页 ↶