1.定义

namedtuple 命令元祖

命名元祖为元祖中的每个元素都赋予了含义,增强了代码可读性

2.namedtuple参数

namedtuple() 函数返回一个命名元祖类,定义如下:

1
namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)
  • typename参数

    namedtuple 返回一个元祖的子类(命名元祖类), 类名typename。

    通过命名元祖类创建出来的命名元祖对象,其内部元素支持属性查找索引操作,并且是可迭代的

  • field_names 参数
    field_names 是具名元组的字段名。
    它可以通过两种形式指定:

    • 字符串组成的序列 比如 [‘x’, ‘y’]、(‘x’, ‘y’)。

    • 一个长字符串,各个字段名之间用空格或逗号分隔 比如 ‘x y’ 或者 ‘x, y’

    字段名必须符合以下规则:

    • 以字母开头

    • 由字母、数字、下划线组成

    • 不能与关键字重名

    • 不能以下划线开头

3.简单使用

1
from collections import namedtuple
2
3
# 简单示例
4
Point = namedtuple('Point', ['x', 'y'])
5
6
# 通过位置参数或者关键字参数实例化
7
p = Point(11, y=22)
8
9
# 索引取值
10
print(p[0] + p[1])
11
"""
12
33
13
"""
14
15
# 像普通元组一样解包
16
x, y = p
17
print(x, y)
18
"""
19
11 22
20
"""
21
22
# 通过名字访问字段
23
print(p.x + p.y)
24
"""
25
33
26
"""
27
28
# __repr__ 展现为 name=value
29
print(repr(p))
30
"""
31
Point(x=11, y=22)
32
"""