案例:
學生信息系統中數據為固定格式:{名字,年齡,性別,郵箱.....}
(元組優勢:存儲空間小,訪問速度快)
學生數量很大為了減小存儲開銷,對每個學生信息用元組表示:
('jim',16,'male','jim@qq.com')
('lilei',18,'male','lilei@qq.com')
('lucy',17,'female','lucy@qq.com')
但是我們使用索引訪問,大量使用索引降低了程序的可讀性,如何解決這個問題
方案一:定義類似其他語言的枚舉類型,也就是定義一系列數值常量
方案二:使用標準庫中的collections.namedtuple代替內置tuple
from collections import namedtuple
student = ('jim',16,'male','jim@qq.com')
print(student[0],student[2])
# 方案一
NAME, AGE, sex, EMAIL = range(4)
print(student[NAME],student[EMAIL])
# 方案二
# namedtuple返回一個內置元組的子類,
# 第一個參數是新創建子類的類名,第二個參數是一系列名字,對應每個索引的名字
# 相當于一個類的工廠
# 開銷僅比內置元組大一點
Student = namedtuple('Student',('name', 'age', 'sex', 'email'))
s1 = Student('jim',16,'male','jim@qq.com')
s2 = Student(name='lilei',age=18,sex='male',email='lilei@qq.com')
print(s1.email)
print(s2.name)
print(isinstance(s1,tuple))