Python允許在namedtuple的聲明中提供field_names
,作爲字符串序列或作爲單個字符串,每個名稱用空格和/或逗號分隔。namedtuple字段名稱:單個字符串還是序列?
根據官方的文檔,似乎在Python 2的首選方法是提供的名稱爲序列:
FIELD_NAMES都是字符串如序列[「X」,「Y」] 。 或者,field_names可以是單個字符串,每個字段名稱由用空格和/或逗號分隔的字段名稱 (例如'x y'或'x,y')分隔。
而在Python 3偏好改變爲單個串版本:
FIELD_NAMES是一個字符串與由 空格和/或逗號分隔的每個字段名,例如「XY」或「X, Y」。 或者,field_names可以是一串字符串,如['x','y']。
是否有背後的原因?
乍一看,我會說單字符串版本效率不高,因爲它需要分割輸入。序列似乎也更易讀。哪一個更有效?
通常namedtuple類型在啓動時創建一次,所以效率在這裏不應該是一個大問題。使用你認爲最具可讀性的內容。 – zstewart
@zstewart:那麼,爲什麼他們花時間在Python 3的文檔中進行重述? – Pintun
也許他們認爲它更具可讀性,或許這不是一個有意的決定,我不知道。但是由於namedtuple通常用作頂級單執行類型聲明,類似於'class',所以這個字符串解析的效率是非常不相關的。 – zstewart