9

小问题:我不明白为什么 Python 的 namedtuple 类型有一个 _make() 函数。据我所知,如果 T 是用 namedtuple 创建的类型,那么

T._make(iterable)    and    T(* iterable)

是一回事。那么为什么要有 _make() 函数呢?有什么我想念的吗?

4

1 回答 1

6

拥有一个与T(*iterable). 考虑一下:

a = namedtuple('a', 'x, y')
b = [(x, x) for x in xrange(10)]
map(a._make, b)

当然,你也可以这样做:

[a(*x) for x in b]

但是这种与函数的对应关系发生在其他地方,比如operatormodule。不过这只是猜测,我不知道这是否是_make.

编辑:我发现了更多关于此的信息;在上一个 Stack Overflow 问题中的链接之后,关于 namedtuple 方法中下划线的原因,我阅读了一个页面,其中指出:

_make() 类方法的灵感来自 Robin Becker 和 Giovanni Bajo,他们指出了一类重要的用例,其中现有序列需要转换为命名元组。

于 2013-08-25T21:51:20.507 回答