首页 新闻 会员 周边 捐助

当一个函数中包含 yield 关键字时,Python 会自动为这个函数生成 __iter__ 和 __next__ 方法

0
[已关闭问题] 关闭于 2025-09-09 17:43

这意味着这个函数变成了一个生成器函数,调用它时会返回一个生成器对象,而不是直接执行函数体

生成器对象是一个迭代器,它实现了 __iter____next__ 方法

 

__iter__ 方法返回生成器对象自身,而 __next__ 方法用于获取生成器的下一个值

 

。当 __next__ 方法被调用时,生成器会从上次暂停的地方继续执行,直到遇到下一个 yield 语句

 

。如果生成器执行完毕,没有更多的值可以返回,就会抛出 StopIteration 异常

 

 
_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-09-09 17:38
< >
分享
所有回答(1)
0
  • 生成器函数是一个包含 yield 关键字的函数。当调用生成器函数时,它不会直接执行函数体,而是返回一个生成器对象

def my_generator():
      yield 1
      yield 2
      yield 3

调用生成器函数时,会返回一个生成器对象。这个生成器对象是一个迭代器,它实现了 __iter____next__ 方法

gen = my_generator()

# 使用 next() 方法获取生成器的下一个值
print(next(gen))  # 输出 1
print(next(gen))  # 输出 2
print(next(gen))  # 输出 3

# 再次调用 next() 方法,会抛出 StopIteration 异常
try:
    print(next(gen))
except StopIteration:
    print("迭代结束")

1 2 3 迭代结束
_java_python | 园豆:984 (小虾三级) | 2025-09-09 17:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册