Python namedtuple 定义与参数详解

Noah
Noah
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍Python标准库中namedtuple工厂函数的使用方法。涵盖类名与字段名的定义、实例化及属性访问方式,并深入解析rename、defaults和module等高级参数的配置技巧,帮助开发者高效构建带字段名的元组对象。

具名元组的基本定义与使用

定义具名元组需指定两个核心参数:第一个为类名字符串,第二个为字段名定义。字段名可通过可迭代对象(如列表或元组)提供,也可使用空格分隔的字符串形式传入。


Card = collections.namedtuple("Card", ("rank", "suit"))
Card = collections.namedtuple("Card", "rank suit")

在实例化对象时,需将具体的字段值作为参数序列传递给构造函数,以完成对象的创建。


card_test = Card("J", "hearts")

访问具名元组的属性时,支持两种语法:既可以使用点运算符(.)通过字段名直接获取值,也可以使用整数索引进行取值。


print(card_test.rank)
print(card_test[1])

namedtuple工厂函数参数详解

知识点扩展:

具名元组的定义

Python标准库中的collections模块提供了namedtuple工厂函数,该函数用于创建带有明确字段名称的元组类型,从而提升代码的可读性和维护性。

工厂函数参数详解

变量名 = namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

namedtuple工厂函数的参数详解:

typename:指定生成的具名元组类的名称,类型必须为字符串。

field_names:定义该元组包含的字段名称。此参数支持两种格式:

  • 内部元素均为字符串的可迭代对象,例如列表或元组;

例如['商品','单价','数量']或('商品','单价','数量')

  • 以英文逗号','分隔的长字符串。此时字段名必须符合特定的命名规范:

例如'商品,单价,数量'

字段名命名规则:

  • 不能与Python的关键字重名。
  • 字段名不能以下划线开头。
  • 必须以字母(包含汉字)开头,后续字符可由字母、数字或下划线组成。

rename:默认值为False,表示必须显式指定所有字段名。若设置为True,当出现重复字段名或非法字段名时,系统会自动将其重命名为'_索引值'的形式。

defaults:用于设置字段的默认值,可以是列表或元组。当定义的字段数量大于defaults中提供的元素数量时,剩余靠后的字段将自动获得对应的默认值。

例如,若字段名为'a','b','c'共3个,而defaults仅提供了'1','2'两个值,则'b'的默认值为'1','c'的默认值为'2'。

module:指定该具名元组所属的模块名称,默认值为'__main__'。

到此这篇关于python定义具名元组实例操作的文章就介绍到这了,更多相关python如何定义具名元组内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。