3
小問題:我不明白爲什麼Python的namedtuple類型有一個_make()函數。據我所知,如果T是使用namedtuple創建的類型,那麼python namedtuple T._make(iterable)vs T(* iterable)
T._make(iterable) and T(* iterable)
是一樣的東西。那麼爲什麼有一個_make()函數?有什麼我失蹤?
小問題:我不明白爲什麼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()類方法的靈感來自羅賓·貝克和 喬瓦尼·巴霍誰指出出一類重要的使用案例來的地方 現有序列需要被轉換爲命名元組。