python闭包中的cell_contents

2023-12-15

python 中的 cell_contents 对闭包的调用是否发生了变化?我知道 func_closure 不起作用并且__closure__ works.

func.__closure__.cell_contents
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'cell_contents'

我正在使用Python 3.4.1。


python 中的 cell_contents 对闭包的调用是否发生了变化?

__closure__是并且一直是一个单元元组(甚至在它被称为func_closure).

每个细胞仍然有一个cell_contents成员。但元组当然不会。

所以,您想要的可能是其中之一:

func.__closure__[0].cell_contents

[cell.cell_contents for cell in func.__closure__]

值得注意的是,其中的细节__closure__未记录并且是 CPython 实现的特定于实现的功能。虽然数据模型定义__closure__ as:

None或包含函数自由变量绑定的单元元组。

...它没有说明这些单元格是什么,或者它们有一个名为cell_contents.

但在 3.3+ 中,有一种记录在案的方法可以获取此信息,inspect.getclosurevars:

>>> inspect.getclosurevars(func)
ClosureVars(nonlocals={'i': 1}, globals={}, builtins={}, unbound=set())

如果您想了解的不仅仅是这个函数返回的内容,您可能想看看它是如何在您最喜欢的解释器中实现的(可能是 CPython,因为其他主要解释器尚不支持 3.3)。inspect是那些旨在提供有用的、可读的源代码的模块之一,因此文档直接链接到源代码。所以你可以看到它是如何工作的——但这基本上就是你所期望的;如果__closure__ isn't None,它只是创建一个映射每个单元格名称的字典__code__.co_freevars到对应的cell.cell_contents来自元组。

如果你想更深入,我不知道闭包内部有什么好的解释(这将是一篇很好的博客文章,我敢打赌有人写过......但我可以在快速谷歌中找到最好的解释)是迈克尔·福德的没有什么是私有的:Python 闭包(和 ctypes),但是 CPython 的源代码函数对象 and 代码对象如果您了解 C 和 Python C API,那么本书的可读性非常好。您可能还想考虑查看PyPy,这往往有点复杂,但都是用 Python 编写的。还有一个简短的实施说明PEP 227,它在Python 2.1中添加了闭包,但并没有解释太多。

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

python闭包中的cell_contents 的相关文章

随机推荐

  • 如何按月分组并在特定月份没有值时返回零?

    这是我的mysql收入表 id title description date amount 1 Vehicle sales up From new sale up 2016 09 09 9999 99 2 Jem 2 Sales From
  • to_sql pyodbc count 字段不正确或语法错误

    我正在从 api 网站下载 Json 数据 并使用 sqlalchemy pyodbc 和 pandas 的 to sql 函数将该数据插入到 MSSQL 服务器中 我最多可以下载 10000 行 但是我必须将块大小限制为 10 否则会出现
  • Xcode:如何构建仅横向的 iPhone 程序

    在 Xcode 中 我尝试设计一个仅横向的用户界面 我将 UIViewController 和 UIView 控件都设置为横向模型 但是当我将控件 如按钮 图像 放置在 UIView 上时 当程序运行时 只有放置在左上角区域的控件会响应 看
  • Spark / Scala:用最后的良好观察填充 nan

    我正在使用 Spark 2 0 1 并希望用列中最后一个已知的值填充 nan 值 我能找到的唯一关于火花的参考Spark Scala 使用最后一次观察进行前向填充 or 用 pyspark 之前已知的良好值填充 null似乎使用RDD 我宁
  • 使用“command”和“bind”参数调用函数

    我想指出的是 我学习Python的时间很短 这个问题是针对初学者的 我需要在程序顶部的菜单中添加命令 这将调用函数 color picker red kolory add command label Czerwony command col
  • 无法将类型 System.Collections.Generic.List 隐式转换为 System.Collections.Generic.List [重复]

    这个问题在这里已经有答案了 我需要一个抽象类 其中包含一个方法来返回从基类或接口派生的项目列表 我的代码如下 public abstract class Template this should return the data to be
  • 一个 Web 应用程序下有多个 Facebook 应用程序

    我正在尝试将 umbraco cms 用于一些 Facebook 应用程序 我的想法是让每个 facebook 应用程序都在 umbraco 的 aspx 页面中 这些 应用程序 非常简单 只有几张图片 也许每个应用程序都有一个民意调查 但
  • SQL - 在不存在的地方插入

    我有一个我认为完全微不足道的查询 如果不存在具有匹配 ID 的值 则将值插入表中 BEGIN INSERT INTO dbo Contact Categories Contact Category ID Description VALUES
  • 如何在 spring bean 中获取 HttpServletRequest?

    我正在开发一个具有基于 Flex 的前端和 Spring Hibernate 后端的应用程序 为了让 Facebook 集成按照我目前的方式工作 我需要在后端读取前端 javascript 中设置的 cookie 并在登录期间进行一些验证
  • 如何在函数运行期间忽略所有用户输入?

    我有一个 Python 模块 它使用 pynput 侦听组合键 然后 一旦按下它 它就会在文本程序中键入一个字符串 效果很好 除了 在下面的示例中 用户的组合键设置为 shift space 这很有意义 并且可能是运行我的程序的 Windo
  • 我可以像 Joe Belfiore 一样在 Windows Phone 7 上使用“演示者模式”来进行应用程序演示吗?

    我希望能够在手机 电脑屏幕或投影仪上显示发生的情况 这似乎是可能的 因为微软在他们所有的演示中都做到了这一点 但我似乎不知道如何做到 例如 我构建了一个应用程序 我想向一屋子的潜在客户演示它 在演示过程中我不能很好地使用模拟器 我希望房间里
  • 从 PHP 插入时在 MongoDB 上执行 JS

    使用 mongo shell 时 我可以运行如下命令 db sandbox insert line db eval storedFunction or db sandbox insert line function return 1337
  • 如何使用 render(:update) 和 Replace_html 重新加载 div?

    如何仅重新加载页面上的 div id 我只需要重新加载某个div 在我的控制器中我有 def mycontrolleraction render update do page reload only the div adiv control
  • C++中删除指针

    背景 我正在努力理解指针 几周前我们在学校才看到它们 今天练习时我遇到了一个愚蠢的 问题 这对你来说可能非常简单 但我几乎没有编程经验 我在 SO 中看到了很多关于删除指针的问题 但它们似乎都与删除类而不是 简单 指针 或任何正确的术语 有
  • JavaScript - 通过 JavaScript 访问网络选项卡 [重复]

    这个问题在这里已经有答案了 我需要访问 例如 Chrome 开发者工具网络选项卡JavaScript 我只需要 1 源名称 第 1 列 和2 类型 第 3 列 但我完全不知道该怎么做 非常感谢链接 提前致谢 我做了一些研究 但似乎你做不到
  • 列表视图中的居中文本

    我发现不可能将文本在列表视图中居中 尝试在几乎所有内容上尝试wrapp content和layout gravity center 但文本不会移动 这是我的班级代理Eco package com blabla import java tex
  • 如何通过void指针访问成员

    首先尝试编写一个小程序将基本算术翻译成英语 最后我构建了一个二叉树 这不可避免地非常不平衡 来表示求值的顺序 首先 我写了 struct expr typedef struct unsigned char entity flag posit
  • 通过ObjectOutputStream发送文件然后用Java保存它?

    我有这个简单的服务器 客户端应用程序 我试图让服务器通过 OutputStream FileOutputStream OutputStream ObjectOutputStream 等 发送文件 并在将其保存到实际文件之前在客户端接收它 问
  • 'this' 绑定到订阅函数而不是 Angular2 中的外部组件范围

    我在 Angular2 中的一个组件中遇到了问题 因为 this 在我的组件之一中绑定到了错误的上下文 我有其他组件没有发生此问题 但我看不出有什么区别 这是我的代码 成分 import Component Input from angul
  • python闭包中的cell_contents

    python 中的 cell contents 对闭包的调用是否发生了变化 我知道 func closure 不起作用并且 closure works func closure cell contents Traceback most re