【发布时间】:2016-12-24 02:04:08
【问题描述】:
从生成器函数返回的生成器对象是否包含对该函数对象的引用?换句话说,是否有可能实现可以做到这一点的magic_fn:
>>> def gen():
... yield 1
... yield 2
...
>>> gen.attr = 'potato'
>>> g = gen()
>>> del gen
>>> next(g)
1
>>> magic_fn(g, 'attr')
'potato'
生成器具有对代码对象 (g.gi_code)、框架 (g.gi_frame) 和名称 (g.__name__) 的引用。代码对象甚至具有与gen.__code__ 相同的内存地址。
但是,假设它还没有被垃圾回收,我找不到访问gen.__dict__ 的方法。是否有可能,或者在创建生成器后链接已经丢失?
【问题讨论】:
标签: python scope reference generator