学习命名元组之前,我们先来熟悉一下元组:
命名元组
在我们学习元组的时候,取元组内部的元素都是同下表索引来进行取值,比如一个元组中包含了三个元素:
tu=('小静','25','喜欢学习'),
分别为:命名,年龄,爱好。
需要取值都是tu[0],tu[1],tu[2]
那么如果程序中充斥了大量的这种没有意义的索引数字,则会影响代码的可读性。感觉下标取值不够人性化,可不可以像字典一样取值人性化?
下标操作通常会让代码表意不清晰,并且非常依赖记录的结构,即很依赖索引数值,添加了新的列的时候你的代码可能就会出错了,而且使得你的代码难以阅读
方式一:
name=0
age=1
hobby=2
tu[name] #取姓名
tu[age] #取年龄
tu[hobby] #取爱好
则此时就可以通过这种见名知意的方式来获取所需值。
方式二:
命名元组(利用 collections
模块中的 namedtuple
函数)
namedtuple 接受两个参数,第一个是创建类型的名称
,第二个是列表
from collections import namedtuple
#创建元祖类 类名和列表属性
Student = namedtuple('Student',['name','age','hobby'])
#创建对象为属性赋值
stu1 = Student('小静','25','学习')
print (stu1.age) #25
stu2 = Student('静静','18','运动')
print (stu2.name) #静静
namedtuple 函数这里接收两个参数,第一个参数为要创建类型的名称,第二个参数是一个列表,代表了每一个索引的名字。当建立完这个 Student 类之后,就可以使用正常的构造方法来构造新的对象如 s,并且可以直接通过访问属性的方式来访问所需要的值。
此时使用isinstance函数对比内置的tuple:
>>> isinstance(s, tuple)
True
可见用namedtuple构造出来的类其本质就是一个tuple元组,所以仍然可以使用下标的方式来访问属性。并且在任何要求类型为元组的地方都可以使用这个namedtuple。