美文网首页python 实战实验室程序员大数据 爬虫Python AI Sql
py编程技巧-1.2- 如何为元组中每个元素命名,提高程序可读性

py编程技巧-1.2- 如何为元组中每个元素命名,提高程序可读性

作者: 天涯明月笙 | 来源:发表于2017-03-24 11:05 被阅读206次

    实际应用场景:
    学生信息系统中数据为固定格式,使用元组来存储,操作速度快。但访问时,我们使用索引(index)访问,大量索引降低程序可读性。如何解决该问题?

    普通做法:

    student = ('mtianyan',18,'male','1147727180@qq.com')
    
    # name
    print student[0]
    
    # age 
    print student[1] >= 10;
    
    # sex
    print student[2] == 'male'
    

    问题:索引值很难看,不能明白到底是什么。

    C语言实现:

    c: 采用宏定义枚举类型

    #define NAME 0
    #define AGE 1
    enum Student(
        NAME,
        AGE,
        SEX,
        )
    

    方案一:python模仿c语言枚举类型,定义一系列数值常量:

    
    # NAME = 0
    # AGE = 1
    # SEX = 2
    # EMAIL = 3
    
    #采用列表拆包形式
    NAME, AGE , SEX ,EMAIL = xrange(4)
    student = ('mtianyan',18,'male','1147727180@qq.com')
    
    print student[NAME]
    
    print student[EMAIL]
    

    方案二: 使用标准库中collections.nametuple替代内置的tuple

    from collections import namedtuple
    
    # 类的工厂
    Student = namedtuple('student',['name','age','sex','email'])
    
    s1 = Student('mtianyan',18,'male','1147727180@qq.com')
    print s1
    s2 =  Student(name ='mtianyan',age =18,sex = 'male',email = '1147727180@qq.com')
    print s2
    
    print s1.name
    print s2.name
    
    #任何使用普通元组的地方都可以使用这一替换
    print isinstance(s1,tuple)
    

    相关文章

      网友评论

        本文标题:py编程技巧-1.2- 如何为元组中每个元素命名,提高程序可读性

        本文链接:https://www.haomeiwen.com/subject/ryixottx.html