2013-08-25 92 views
3

小問題:我不明白爲什麼Python的namedtuple類型有一個_make()函數。據我所知,如果T是使用namedtuple創建的類型,那麼python namedtuple T._make(iterable)vs T(* iterable)

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

是一樣的東西。那麼爲什麼有一個_make()函數?有什麼我失蹤?

回答

3

具有與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()類方法的靈感來自羅賓·貝克和 喬瓦尼·巴霍誰指出出一類重要的使用案例來的地方 現有序列需要被轉換爲命名元組。