nametuple — 同一定义中不同类型名称的应用

2024-02-25

蟒蛇namedtuple工厂函数允许指定它创建的子类的名称两次 - 第一次在声明的左侧,然后作为函数的第一个参数(IPython 1.0.0、Python 3.3.1):

In [1]: from collections import namedtuple

In [2]: TypeName = namedtuple('OtherTypeName', ['item'])

我在 docs.python.org 网站上看到的所有示例在两个位置都使用相同的名称。但可以使用不同的名称,并且它们的功能也不同:

In [3]: TypeName(1)
Out[3]: OtherTypeName(item=1)

In [4]: type(TypeName)
Out[4]: builtins.type

In [5]: type(OtherTypeName)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-6616c1214742> in <module>()
----> 1 type(OtherTypeName)

NameError: name 'OtherTypeName' is not defined

In []: OtherTypeName(1)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-9-47d6b5709a5c> in <module>()
----> 1 OtherTypeName(1)

NameError: name 'OtherTypeName' is not defined

我想知道这个功能可能有哪些应用程序。


您不能两次指定该名称。您在调用namedtuple 时指定一个“内部”名称,然后将生成的namedtuple 类型分配给一个变量。

您指定为namedtuple 的参数是生成的namedtuple 类型对其名称的自己的想法——即“它如何称呼自己”。等号左边的东西只是一个普通的Python变量,你可以为其分配namedtuple类型。

您只能在将创建的命名元组分配给某个对象时使用它,并且只能通过分配给它的名称来使用它。传递“OtherTypeName”作为“名称”并不会神奇地创建一个名为的变量OtherTypeName,这就是为什么当您尝试使用该名称时会收到 NameErrorOtherTypeName。传递给namedtuple的名称(在您的例子中为“OtherTypeName”)的唯一真正用途是显示结果值。

显然,在许多情况下,让用于引用命名元组的变量与其自己的内部名称相同是很好的;它让事情变得不那么混乱。但是你可以有多个变量指向同一个命名元组:

NameOne = namedtuple('OtherTypeName', ['item'])
NameTwo = NameOne

。 。 。或者没有变量直接指向它,并且只能通过某个容器访问它:

x = []
x.append(namedtuple('OtherTypeName', ['item']))
x[0] # this is your namedtuple

与其说它有特殊的“应用”,不如说它的行为本身并不特殊:namedtuple 是一个像任何其他对象一样的对象,创建一个对象与创建一个引用它的变量不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nametuple — 同一定义中不同类型名称的应用 的相关文章

  • 切片稀疏(scipy)矩阵

    我将不胜感激任何帮助 以理解从 scipy sparse 包中切片 lil matrix A 时的以下行为 实际上 我想根据行和列的任意索引列表提取子矩阵 当我使用这两行代码时 x1 A list 1 x2 x1 list 2 一切都很好
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 查找模块中显式定义的函数 (python)

    好的 我知道您可以使用 dir 方法列出模块中的所有内容 但是有什么方法可以仅查看该模块中定义的函数吗 例如 假设我的模块如下所示 from datetime import date datetime def test return Thi
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • 如何将 self 传递给装饰器?

    我该如何通过self key下面进入装饰器 class CacheMix object def init self args kwargs super CacheMix self init args kwargs key func Cons
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • Python Fabric - 未找到主机。请指定用于连接的(单个)主机字符串:

    如何获取 找不到主机 请指定用于连接的 单个 主机字符串 面料如何解决 def bootstrap host ec2 54 xxx xxx xxx compute 1 amazonaws com env hosts host env use
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Python 类型安全吗?

    根据维基百科 https en wikipedia org wiki Type system Type safety and memory safety 如果一种语言不允许违反类型系统规则的操作或转换 计算机科学家就认为该语言是 类型安全的
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name

随机推荐

  • 无法使用c保存图像文件?

    我尝试将一个 bmp 图像克隆到另一个 bmp 图像中 但最终的图像无法打开 include
  • 从 WinRT 下的 WebView 复制内容

    我有一个WebView我想将一些 HTML 内容转换为 RTF 我研究过 RTF 转换函数 老实说它们看起来都有点不稳定 所以我的想法是复制内容WebView into a RichEditBox 然后从那里保存为 RTF 这个例子我已经看
  • 使用 CSS 对图像进行跨浏览器亮度过滤

    我需要使用全尺寸图片作为背景 并且需要该图片具有亮度滤镜 目前仅在进行中Chrome and Firefox 最后一个使用 svg 这就是我所拥有的 img fullscreenIMG display block position abso
  • 如何使VB.NET函数的参数成为Generic类型?

    我有一个如下所示的 VB NET 函数 传递给该函数的参数 x 的类型为 Single 但是 我想编写该函数 以便它可以接受任何数字类型 例如 Single Double 和 Integer 我知道一种方法是编写 3 个具有相同名称的函数
  • 获取我的 Heroku 应用程序的有限 IP 地址列表?

    我有一个客户想要向我的 Heroku 应用程序发送 GET 请求 他们要求提供一份 IP 地址列表 以将其防火墙的出口列入白名单 我意识到这可能每周或更频繁地更改 但是是否有可能获得我的 Heroku 应用程序可能所在的 IP 的有限列表
  • iPhone应用程序生命周期中的最后一个功能是什么

    在我的应用程序关闭之前 我必须从网络服务中注销用户 我找不到应用程序死亡之前调用的最后一个函数 void LogoutUser int userId GlobalData sharedMySingleton getUserId NSStri
  • 是否有一个格式说明符始终表示带有 _tprintf 的字符字符串?

    当您在 Windows 上构建应用程序时 使用TCHAR支持 s in tprintf means char Ansi 构建的字符串和wchar t 对于 Unicode 构建 同时 S意思是相反 但是是否有任何格式说明符总是意味着char
  • Docker 原生 Windows 支持吗?

    我很难找到这方面的信息 我在某处看到消息称 Docker 现在已原生集成到 Windows 中 那么显然这意味着它们不是 Linux 容器 而是某种 Windows 容器 有人有这方面的更多信息吗 由于许多 Docker 收购 出现了重大更
  • Docker上下文如何使用特定的ssh密钥

    我想使用 docker 上下文通过 ssh 联系服务器 我的本地有许多不同的 ssh 密钥 如何告诉上下文使用特定的键 我试过了 docker context create test docker host ssh
  • Swagger 未找到 ApiVersion ed 操作

    我正在 ASP NET Core 中构建 Web API 并尝试多个版本 我正在按照以下说明为每个版本创建 Swagger 文档 https github com domaindrivendev Swashbuckle AspNetCore
  • 如何在我的map/reduce函数中调用mongodb?这是一个好的做法吗?

    我想知道是否 首先 是否可以在我的map reduce函数中使用mongodb函数 例如 function foo db myCollection find id ObjectId 4ee235ce002c62f393000008 prin
  • php中的jquery ajax停止重新加载页面[重复]

    这个问题在这里已经有答案了 当我单击书籍链接时 他重新加载页面并对列进行排序 我想使用ajax停止重新加载 如何 这是我在这个过程中的职责 这个 getBook 函数 public function getBooks start 0 lim
  • 用内置的角度动画替换 jQuery 动画

    给定这个模板 div h2 TEST headline Title h2 div 以及以下指令 我如何将该指令更改为replace the jquery内置淡入淡出angular动画 我要求文本淡出 替换 然后淡入 newman direc
  • 默认情况下 ASP.NET 4.0 代码在哪个帐户中执行?

    比方说 我有一个访问 读 写 文件系统 应用程序内的文件 Active Directory 和 SQL Server 数据库的应用程序 我需要授予该帐户权限 以便他访问这些内容 应用程序池标识为 IIS APPPOOL ASP NET v4
  • Android 4.0 c2dm问题

    当我使用 android c2dm 将通知推送到我的设备时 我遇到了一个奇怪的问题 如果我使用 管理应用程序 gt 我的应用程序 gt 强制停止 关闭应用程序 并且尝试向我的设备发送推送 则它不起作用 它适用于我所有其他 Android 版
  • 检查数组的递归情况

    在 PHP 中检查数组是否递归的最佳方法是什么 给出以下代码 来自PHP 手册 http www php net manual en language types array php 73936 print r 将显示递归当到了第三个的时候
  • 如何使用 QT 设置 PATH 变量?

    如何使用 QT 4 8 获取和设置 PATH 变量 我知道我可以使用 STL 中的 getenv 获取 PATH 变量值 但不知道如何使用 STL 或任何基于 Qt 的方法设置它 如果 QT 有它的功能 我想了解并使用它 而不是去使用 Wi
  • SQL Server 2008 将地理点保存为十六进制

    我已将轨迹记录到文本文件中 现在我想将其作为点类型插入 SQL Server 2008 R2 数据库的表中 我使用 OpenRowSet 读取文本文件并将每一行插入临时表中 然后我解析每一行并将正确的值插入到真实表中 文件中的每一行如下所示
  • 使用 Collections.sort 对自定义类数组列表字符串进行排序

    我试图通过声明我自己的匿名比较器来使用 Collections sort 对我的自定义类数组列表进行排序 但排序并没有按预期工作 我的代码是 Collections sort arrlstContacts new Comparator
  • nametuple — 同一定义中不同类型名称的应用

    蟒蛇namedtuple工厂函数允许指定它创建的子类的名称两次 第一次在声明的左侧 然后作为函数的第一个参数 IPython 1 0 0 Python 3 3 1 In 1 from collections import namedtupl