namedtuple 的定义和使用
什么是 namedtuple?它比普通元组和类有什么优势?请用代码说明。
回答
孤独的心
namedtuple 是一个工厂函数,创建元组的子类并赋予字段名,实现轻量级不可变对象。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
# 访问方式
print(p.x, p.y) # 属性访问
print(p[0], p[1]) # 索引访问
x, y = p # 解包
# 嵌套
Student = namedtuple('Student', 'name grade')
s = Student('Alice', 'A')
优势:
- 比普通类更省内存(不可变,slots)
- 比元组更可读(有字段名)
- 支持 _replace、_asdict 等方法
- 可作为 dict 的 key(因为不可变)