首页 > 试题广场 >

以下使用生成器的数据管道代码中,若输入数据 [10, 20,

[单选题]
以下使用生成器的数据管道代码中,若输入数据 [10, 20, 30],最终输出结果是什么?
 
def data_reader(data):
    for item in data:
        print(f"Read: {item}")
        yield item
def data_filter(gen):
    for item in gen:
        if item > 15:
            print(f"Filter: {item}")
            yield item * 2
def data_sink(gen):
    result = []
    for item in gen:
        result.append(item)
    return result
pipeline = data_sink(data_filter(data_reader([10, 20, 30])))
  • [40, 60] 输出: Read:10 → Read:20 → Filter:20 → Read:30 → Filter:30
  • [20, 40] 输出: Read:10 → Filter:10 → Read:20 → Filter:20
  • [60] 输出: Read:10 → Read:20 → Read:30 → Filter:30
  • [] 输出: Read:10 → Read:20 → Read:30
调用 data_reader([10, 20, 30]) 时,Python 并不会立即执行函数内部的代码。而是会返回一个生成器对象(Generator Object)。这个生成器对象遵循迭代器协议(Iterator Protocol)。这意味着它可以被 for 循环遍历。只有当 for 循环(在 data_filter 中)开始请求数据时, data_reader 的代码才会真正运行
发表于 今天 08:49:32 回复(0)