小问题:我不明白为什么 Python 的 namedtuple 类型有一个 _make() 函数。据我所知,如果 T 是用 namedtuple 创建的类型,那么
T._make(iterable) and T(* iterable)
是一回事。那么为什么要有 _make() 函数呢?有什么我想念的吗?
小问题:我不明白为什么 Python 的 namedtuple 类型有一个 _make() 函数。据我所知,如果 T 是用 namedtuple 创建的类型,那么
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
.
编辑:我发现了更多关于此的信息;在上一个 Stack Overflow 问题中的链接之后,关于 namedtuple 方法中下划线的原因,我阅读了一个页面,其中指出:
_make() 类方法的灵感来自 Robin Becker 和 Giovanni Bajo,他们指出了一类重要的用例,其中现有序列需要转换为命名元组。