yield创建生成器函数
包含yield
关键字的函数被称为生成器函数,调用生成器函数不会运行函数中的代码,而是返回一个生成器对象。
def fun_generator():
print("run?")
yield "Hello world!!"
yield "Good Work!"
g = fun_generator()
print(type(g))
# <class 'generator'>
yield与return的区别
yield
和return
都会返回一个值,它们的区别如下:
return
:结束函数并向调用者返回一个值。函数状态不会被保存,也无法恢复。yield
:允许函数返回一个值并暂停,再次调用时会从yield
语句之后立即恢复执行。
调用生成器对象
调用生成器函数会返回"生成器对象",生成器对象是可迭代的,可被当作迭代器使用。
调用"生成器对象"有两种方法:
- 通过
next()
函数 - 通过
for
循环
示例代码:
def fun_generator():
print("hello")
yield 1
print("world")
yield 2
print("good")
yield 3
print("job")
# user next()
g1 = fun_generator()
print(next(g1))
print(next(g1))
print(next(g1))
# user for loop
g2 = fun_generator()
for i in g2:
print(i)