小问题:我不明白为什么Python的namedtuple类型有_make()函数。据我所知,如果T是用namedtuple创建的类型,那么
T._make(iterable) and T(* iterable)
是一回事。那么为什么要有一个_make()函数呢?有什么我想念的吗?
答案 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指出了一类重要的用例 现有的序列需要转换为命名元组。