如何从 Python 的内部函数中产生,或者,如何将循环转换为生成器,而不直接调用 yield?

问题描述

考虑

def gen():
    for i in range(5):
        yield i

for n in gen():
    print(n)

印刷品

0
1
2
3
4

现在,假设我有 data_source(foo) 可以接受任何函数 foo。它自行迭代,并对迭代器返回的内容执行 foo

def foo(n: int):
    print(n)

def data_source(foo):
    for i in range(5):
        foo(i)

data_source(foo)

印刷品

0
1
2
3
4

我想将 data_source 转换为生成器而不改变 data_source

可以对 foo 做任何事情,并且可以根据需要包装 data_source

我想要类似的东西

def foo(n: int):
    yield n

def data_source(foo):
    for i in range(5):
        foo(i)

for i in data_source(foo):
    print(i)

显然失败了

TypeError: 'NoneType' 对象不可迭代


是否可以通过回调将循环转换为生成器,而无需接触 data_source 本身?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)