学习资源传送门:https://www.bilibili.com/video/BV1b5411s76z?p=4
(一)问题描述:2-2 如何为元组中的每个元素命名,提高程序可读性
(二)解决方案
(三)代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/11/27 15:16
# @Author : Qiufen.Chen
# @Email : 1760812842@qq.com
# @File : tuple_dic.py
# @Software: PyCharm
"""如何为元组中的每个元素命名,提高程序的可读性"""
'''
('Jim', 16, 'male', 'jim321@gmail.com')
('Lili', 17, 'female', 'lili334@gmail.com')
('Luck', 118, 'female', 'luck456@gmail.com')
'''
# -------------------------------------------------------------------------
# 第一种方式:定义类似与其他语言的枚举类型,也就是定义一系列数值常量
NAME, AGE, SEX, EMAIL = range(4)
student = ('Jim', 16, 'male', 'jim321@gmail.com')
print(student[NAME]) # 用常量做索引可以一目了然
# -------------------------------------------------------------------------
# 使用标准库中的collections.nametuple替代tuple
from collections import namedtuple
# 创建一个student类
Student = namedtuple('Student', ['name', 'sge', 'sex', 'email'])
stu = Student('Jim', 16, 'male', 'jim321@gmail.com')
print(stu) # Student(name='Jim', sge=16, sex='male', email='jim321@gmail.com')
print(stu.name, stu.sge, stu.sex, stu.email) # Jim 16 male jim321@gmail.com
----------------------------------------------------------------------------------------------------------------------
因为元组的局限性——不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections.namedtuple 这个工厂函数,来构造一个带字段名的元组。
collections.namedtuple(typename, field_names, verbose=False, rename=False)
返回一个具名元组子类 typename,其中参数的意义如下:
- typename:元组名称
- field_names: 元组中元素的名称
- rename: 如果元素名称中含有 python 的关键字,则必须设置为 rename=True
- verbose: 默认就好
----------------------------------------------------------------------------------------------------------------------