| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python内置模块namedtuple -> 正文阅读 |
|
[Python知识库]Python内置模块namedtuple |
namedtuplenamedtuple是一个工厂函数,定义在python标准库的collections模块中。
返回一个新的元组子类,名为 typename 。这个新的子类用于创建类元组的对象,可以通过字段名来获取属性值,同样也可以通过索引和迭代获取值。子类实例同样有文档字符串(类名和字段名)另外一个有用的
参数说明namedtuple有两个必填参数typename和field_names, 自Python3.6之后rename,defaults,module必须是关键字参数。 typename参数类型为字符串,切字符串的命名规则和变量的命名规则一致。具名元组返回一个元组子对象,我们要为这个对象命名,所以要传入typename参数。如果要支持封装,应当将命名元组类赋值给一个匹配 typename 的变量,例如 field_namesfield_names 是一个像 [‘x’, ‘y’] 一样的字符串序列。另外 field_names 可以是一个纯字符串,用空白或逗号分隔开元素名,比如 ‘x y’ 或者 ‘x, y’。实际上,field_names的命名规则和变量的命名规则一致。 rename如果 rename 为真,无效字段名会自动转换成位置名。比如 [‘abc’, ‘def’, ‘ghi’, ‘abc’] 转换成 [‘abc’, ‘_1’, ‘ghi’, ‘_3’] , 消除关键词 def 和重复字段名 abc 。 defaultsdefaults 可以为 None 或者是一个默认值的 iterable 。如果一个默认值字段跟其他没有默认值的字段在一起出现,defaults 就应用到最右边的参数。比如如果上面的Point有三个字段x, y, z 和默认值 (1, 2) ,那么x就必须指定一个参数值 ,而y和z可以不用指定参数。因为它们具有默认值(y的默认值1 ,z的默认值2)。例如:
module如果 module 值有定义,命名元组的 module 属性值就被设置。通常无需设置。 namedtuple的方法和属性除了继承元组的方法,命名元组还支持三个额外的方法和两个属性。为了防止字段名冲突,方法和属性以下划线开始。 _make
_make是类方法,它从存在的序列或迭代实例创建一个新实例。例如:
_asdict
返回一个新的 dict ,它将字段名称映射到它们对应的值。例如: _replace
返回一个新的命名元组实例,并将指定字段替换为新的值。例如:
_fields以字符串元组的形式列出字段名。例如:
_field_defaults以字典类型返回字段的默认值。例如:
字典转为namedtuple
通过继承namedtuple来扩展功能因为一个命名元组是一个正常的Python类,它可以很容易的通过子类更改功能。下面是官方文档的例子。
上面的子类设置 slots 为一个空元组。通过阻止创建实例字典保持了较低的内存开销。子类对于添加和存储新的字段名是无效的。应当通过 _fields 创建一个新的命名元组来实现它,例如: 文档字符串Python3.5之后文档字符串属性变成可写。例如:
实际上,namedtuple的源码中,就是文档字符串在后面编写。极大的增加了灵活性,源码如下所示:
为命名元组添加类型提示在python3.5之后引入了类型提示支持,但是Python 运行时不强制执行函数和变量类型注解,但这些注解可用于类型检查器、IDE、静态检查器等第三方工具。在typing模块中有一个NamedTuple的类,提供了给命名元组添加类型提示的途径。例如:
关于更多的内容,可以参考下面给出的Python官方文档。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 22:36:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |