Python namedtuple T._make(iterable)vs T(* iterable)

时间:2013-08-25 21:27:31

标签: python namedtuple

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

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

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

1 个答案:

答案 0 :(得分:4)

使用与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]

但是这种与函数的对应关系发生在其他地方,比如operator module。这只是猜测,我不知道这是否是_make的基本原理。

编辑:我发现了更多有关此内容的信息;在a previous Stack Overflow question, regarding the reason for the underscore in namedtuple methods中的链接后,我阅读了a page,其中说明了:

  

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