首页 > 解决方案 > 修改条件python参数中的变量

问题描述

我有一个 while 循环,它对另一个类提供的输出进行操作,直到没有输出。

while a.is_next():
   fn(a.get_next())

有没有办法检查一个新项目是否存在?同时“加载”它?

while b=a.get_next():
  fn(b)

标签: pythonpython-3.x

解决方案


看起来您正在尝试重新发明iterator。迭代器必须有两个方法:一个__iter__返回迭代器本身的__next__方法和一个返回下一项或 raises的方法StopIteration。例如

class MyIterator:
    def __init__(self):
        self.list = [1, 2, 3]
        self.index = 0
    def __iter__(self):
        return self
    def __next__(self):
        try:
            ret = self.list[self.index]
            self.index += 1
            return ret
        except IndexError:
            raise StopIteration

这个例子很多,但它允许我们在 Python 需要迭代器的任何地方使用该迭代器

for x in MyIterator():
    print(x)

1
2
3

推荐阅读