CodeWalk

namedtuple 的定义和使用

作者:孤独的心 · 2026-05-30 12:55

什么是 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')

优势:

  1. 比普通类更省内存(不可变,slots
  2. 比元组更可读(有字段名)
  3. 支持 _replace、_asdict 等方法
  4. 可作为 dict 的 key(因为不可变)