zoukankan      html  css  js  c++  java
  • Python强化训练笔记(二)——元组元素的命名

    对于一个元组如:

    >>> s1 = ('Jim', 21, 'boy', '5788236@qq.com')

    我们要得到该对象的名字,年龄,性别及邮箱的方法为s1[0],s1[1],s1[2],s1[3]。那么如果程序中充斥了大量的这种没有意义的索引数字,则会影响代码的可读性。所以考虑几种方法来解决这个问题:

    >>> NAME = 0
    >>> AGE = 1
    >>> SEX = 2
    >>> EMAIL = 3
    # 或者通过这样定义
    >>> NAME, AGE, SEX, EMAIL = xrange(4)

    则此时就可以通过s1[NAME], s1[AGE], s1[SEX], s1[EMAIL]这种见名知意的方式来获取所需值。

    另外一种方法是利用collections模块中的namedtuple函数。

    >>> from collections import namedtuple
    >>> Student = namedtuple('Student', ['name', 'age', 'sex', 'email'])
    >>> s1 = Student('Jim', 21, 'boy', '123@qq.com')
    Student(name='Jim', age=21, sex='boy', email='123@qq.com')
    >>> s2 = Student(name='Tom', age=22, sex='boy', email='abd@123.com')
    Student(name='Tom', age=22, sex='boy', email='abd@123.com')
    >>> s1.name
    'Jim'
    >>> s2.age
    22

    namedtuple函数这里接收了两个参数,第一个参数为要创建类型的名称,第二个参数是一个列表,代表了每一个索引的名字。当建立完成这个Student类之后,我们可以使用正常的构造方法来构造新的对象如s1和s2,并且可以直接通过访问属性的方法来访问所需要的值。

    此时使用isinstance函数对比内置的tuple:

    >>> isinstance(s1, tuple)
    True

    说明这个用namedtuple构造出来的类其本质就是一个tuple元组,所以仍然可以使用下标的方式来访问属性。并且在任何要求类型为元组的地方都可以使用这个namedtuple。

  • 相关阅读:
    node.js结合wechaty实现微信机器人[基础篇]
    .env文件为NodeJS全局环境变量
    基于jquery实现一个提示插件
    Puppeteer实现一个超简单的自动化机器人
    Vue高仿阿里动态banner,制作组件
    css不常用属性
    Vue表单校验失败滚动到错误位置
    C# Func委托
    深入解析C# 4th 笔记(第一章)
    C# 笔记 XML基础
  • 原文地址:https://www.cnblogs.com/shiyu404/p/5941763.html
Copyright © 2011-2022 走看看