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

问题描述:

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

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

是一样的东西。那么为什么有一个_make()函数?有什么我失踪?

具有与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()类方法的灵感来自罗宾·贝克和 乔瓦尼·巴霍谁指出出一类重要的使用案例来的地方 现有序列需要被转换为命名元组。