2024-04-26 22:36:29 发布
网友
假设我有一个上下文管理器:
@contextmanager def cm(x): y = f(x) z = yield y g(z)
如何将z发送到上下文管理器?在
z
我试过了:
但是我得到了stop迭代,这可能是因为send产生了?在
send
@contextmanager返回一个helper函数,该函数返回一个GeneratorContextManager实例,使用生成器作为管理上下文的方法。在
@contextmanager
GeneratorContextManager
它不打算用作您可以发送到的任何内容,next()在__enter__中被调用。您可以尝试使用.gen属性访问底层生成器:
next()
__enter__
.gen
my_cm.gen.send(123)
但是您必须包含一个额外的yield语句,以防止方法过早退出。注意,__exit__将再次调用next()来结束生成器。在
__exit__
{{{cd8}管理器在最后一次调用cd3}准备就绪。在
@contextmanager
返回一个helper函数,该函数返回一个GeneratorContextManager
实例,使用生成器作为管理上下文的方法。在它不打算用作您可以发送到的任何内容,
next()
在__enter__
中被调用。您可以尝试使用.gen
属性访问底层生成器:但是您必须包含一个额外的yield语句,以防止方法过早退出。注意,
^{pr2}$__exit__
将再次调用next()
来结束生成器。在{{{cd8}管理器在最后一次调用cd3}准备就绪。在
相关问题 更多 >
编程相关推荐