我正在学习KafkaConsumer并在第3行提出问题
1.from kafka import KafkaConsumer
2.consumer = KafkaConsumer(arglist)
3.for message in consumer
我知道“for ... in ...”声明。这个for循环用于解析集合的元素。所以这里的消费者对象可以是一个集合?我抬头看着https://github.com/dpkp/kafka-python。但是在KafkaConsume实现中没有“集合”的东西
答案 0 :(得分:2)
在python中,只要它实现/定义__iter__
方法,就可以迭代一个对象。这不仅限于收藏!以下是有关如何创建可迭代对象的基本示例:
class SimpleExample():
def __iter__(self):
i = 0
while i < 10:
yield i*2
i+=1
se = SimpleExample()
for i in se:
print(i)
这将打印0 2 4 6 8 10 12 14 16 18
并退出循环。
回到kafka消费者,SimpleConsumer
在simple.py
, line 346中定义了这样一种方法。这就是为什么你可以使用for .. in
语法。