文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

2 . python Collectio

2023-01-31 06:51

关注

nametuple() 是具有命名字段的元组的工厂函数


命名元组为元组中每个位置赋予含义,并允许更具可读性的自编写代码 

它们可以在任何使用常规元组的地方使用,并且他们添加了按名称而不是位置索引访问字段的功能。


用法:

collections.namedtuple(typename, field_names, *, verbose=False, rename=False, module=None)


    返回名为typename的新元组子类。 新的子类用于创建类似元组的对象,这些对象具有可以通过属性查找访问的字段以及可索引和可迭代的字段。 子类的实例也有一个有用的docstring(带有typename和field_names)和一个有用的__repr __()方法,它以name = value格式列出元组内容。


    field_names是单个字符串,每个字段名由"空格"和"/"或"逗号"分隔,例如'x y'或'x,y'。或者,field_names 可以是一系列字符串,例如['x', 'y']。


    任何有效的Python标识符都可以用于字段名称,除了以下划线开头的名称外。 

    有效标识符由字母,数字和下划线组成,但不以数字或下划线开头,并且不能是关键字,例如:class,for,return,global,pass或raise。


    如果 rename 为true,则无效的字段名会自动替换为位置名称。 

    例如,将['abc','def','ghi','abc']转换为['abc','_1','ghi','_3'],从而消除关键字def和重复字段名abc。


    如果verbose为true,则在构建类定义之后打印它。 此选项已过时; 相反,打印_source属性更简单。

    如果定义了module,则将命名元组的__module__属性将设置为该值。


命名的元组实例没有每个实例的字典,因此它们是轻量级的,并且不需要比常规元组占用更多的内存。

在版本3.1中更改:添加了对rename的支持。

在版本3.6中更改:verbose 和 rename 参数成为 keyword-only 参数。

在版本3.6中更改:添加了module参数。

image.png


命名元组对于将字段名称分配给由csv或sqlite3模块返回的结果元组特别有用:

image.png

        除了从元组继承的方法外,命名元组还支持三个额外的方法和两个属性。为防止与字段名称冲突,方法和属性名称以下划线开头。


(1)classmethod 

    somenamedtuple._make(iterable)

                从现有序列生成新实例或可迭代的类方法。

            image.png

            

    somenamedtuple._asdict()

                返回一个新的OrderedDict,它将字段名称映射到它们对应的值:

            image.png


            somenamedtuple._replace(**kwargs)

                返回指定元组的新实例,用新值替换指定字段:

             image.png


    somenamedtuple._source

                带有纯Python源代码的字符串,用于创建命名元组类。 源使得命名元组自我记录。 它可以打印,使用exec()执行,或保存到文件并导入。


                

    somenamedtuple._fields

                列出字段名称的字符串元组。 用于内省和从现有命名元组中创建新的命名元组类型。

            image.png

            

            要检索名称存储在字符串中的字段,请使用getattr( )函数:

            image.png

    

            要将字典转换为命名元组,请使用double-star-operator(双星运算符)(如解包参数列表中所述):

            image.png


              由于命名元组是常规的Python类,因此可以使用子类轻松添加或更改功能。以下是如何添加计算字段和固定宽度打印格式的方法:

              image.png


               

                上面显示的子类将__slots__设置为一个空元组。 这有助于防止创建实例字典,从而降低内存需求。

                子类化对于添加新的存储字段没有用处。 

                相反,只需从_fields属性创建一个新的命名元组类型:

                image.png

   

                可以通过直接分配__doc__字段来自定义文档字符串:

                image.png

                

                可以使用_replace()来自定义原型实例来实现默认值:

                image.png

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯