问题标签 [contextmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 有没有一种有意义的方式在生成器中使用上下文管理器?
输出:
有没有办法让 python在-loop 被中断__exit__
时自动调用 context() 的方法?for
或者其他实现相同目标的方法?我对生成器和上下文管理器的了解让我怀疑这是不可能的,但这使得上下文管理器在生成器内部相当无用,不是吗?在我看来,块yield
内的语句with
应该引发红旗,上下文管理器__exit__
可能无法运行。
python - 是否可以制作一个上下文敏感的 python 上下文管理器来保存、修改和恢复状态?
我有一对 python 函数,它们当前在两个值之间翻转一个全局变量。我想把它们变成上下文管理器,这样我就可以将它们用作with
块,在块内设置变量,但在之后恢复它。这是所需的行为:
这样的嵌合体可能吗?
更新:为了清楚起见,这里是仅上下文管理器的实现:
使用关键字调用这些 w/oa 会返回一个生成器。有没有办法通过普通函数调用和巧克力上下文管理器来获得模式翻转行为?
python - 使用循环引用处理对象
我的设计如下:
__main__
参考a
a
参考b
b
参考a
a
被创建然后从__main__
因此a
并b
具有循环引用。但是,del a
我宁愿两者兼而有之a
,然后将其b
处理掉。
我在很多地方看到使用上下文管理器的建议,特别是with
语句而不是__del__()
. 但是,我在本地范围内看到的所有with
开始和结束示例(例如,某种方法)
这可以优雅地执行with
吗?
什么是替代方案?
python - 为 zipfile 定义的 __enter__ 和 __exit__ 在哪里?
基于with 语句
__exit__()
加载上下文管理器以供以后使用。- 上下文管理器的
__enter__()
方法被调用。
我已经看到了其中一种与zipfile的用法
问题> 我检查了位于此处的 zipfile 的源代码:
/usr/lib/python2.6/zipfile.py
不知道__enter__
and__exit__
函数在哪里定义?
谢谢
python - 串行端口上下文管理器
以下是合理的方法吗?
在哪里SerialPorts
并SerialPort
实现上下文管理器接口。
SerialPorts.exit()
循环通过添加的串行端口调用它们的exit()
. SerialPort
'exit()
关闭串行端口。
有没有更好的方法来做到这一点?
python - 上下文管理器适合这份工作吗?
下面粘贴的代码执行以下操作:
- 创建一个导入钩子
- 创建一个上下文管理器,它
meta_path
在退出时设置和清理。 - 转储由imports.log中输入的程序完成的所有导入
现在我想知道在这种情况下使用上下文管理器是否是一个好主意,因为实际上我没有标准try/finally
流程,而只是一个设置和清理。
另一件事——用这条线:
会cc
变成None
?它不应该是一个CollectorContext
对象吗?
python - 在 python 中,是否有在设置/拆卸中使用上下文管理器的好习惯
我发现我在 Python 中使用了大量的上下文管理器。但是,我一直在使用它们测试一些东西,我经常需要以下内容:
当这进行许多测试时,这显然会变得无聊,因此本着 SPOT/DRY(单点真理/不要重复自己)的精神,我想将这些部分重构到测试setUp()
和tearDown()
方法中。
然而,试图这样做导致了这种丑陋:
必须有更好的方法来做到这一点。理想情况下,在每个测试方法的setUp()
/中tearDown()
没有重复位(我可以看到在每个方法上重复装饰器是如何做到的)。
编辑:考虑undertest对象是内部的,GetResource
对象是第三方的东西(我们没有改变)。
我在这里重命名GetSlot
了GetResource
——这比特定情况更普遍——上下文管理器是对象进入锁定状态和退出的方式。
python - 使用上下文管理器将脚本输出重定向到文件?
我正在编写一个脚本,我有一个选项,可以在命令行上传递,脚本是否应该将其结果打印到标准输出或预定义的结果文件。代码大纲如下所示。我现在已经阅读了一些关于 Python 中的上下文管理器的内容,但我不确定在这种特定情况下是否以及如何使用上下文管理器。所以我正在寻求建议
- 在这个问题中使用上下文管理器是否有意义
- 如何着手实施它。
因此,没有上下文管理器的代码是:
python - 嵌套 Python 上下文管理器
在这个问题中,我定义了一个包含上下文管理器的上下文管理器。完成这种嵌套的最简单正确的方法是什么?最后我打电话self.temporary_file.__enter__()
过去了self.__enter__()
。但是,在 中self.__exit__
,我很确定我必须调用self.temporary_file.__exit__(type_, value, traceback)
finally 块以防引发异常。如果出现问题,我应该设置 type_、value 和 traceback 参数self.__exit__
吗?我检查了contextlib
,但找不到任何实用程序来帮助解决这个问题。
问题的原始代码: