生成器函数

# 生成器的本质就是迭代器
# 三种创建方法:
'''
1.通过生成器函数
2.通过生成器表达式创建生成器
3.通过数据转换


'''

def func():
print("我是周杰伦")
yield "昆凌" # 函数中包含了yield 当前这个函数就不再是普通的函数了,是生成器函数
print("我是王力宏")
yield "李云迪"
print("我是笛卡尔积")
yield "我是牛顿"
print("爱因斯坦") # 最后yield之后再进行__next__()函数会报错
# return 直接返回结果,结束函数的调用
# yield 返回结果,让函数分段执行

g = func() # 通过函数func() 来创建一个生成器
print(g.__next__()) # 周杰伦
print(g.__next__()) # 王力宏
print(g.__next__())
#print(g.__next__())

注意点:
  函数中包含了yield就是生成器函数
  生成器函数被执行,获取到的是生成器,而不是函数的执行

取值:
  1.__next__()
  2.send(值)给上一个yield位置传一个值,第一个和组后一个yield不用传值
  3.可以for 循环
  4.转换为列表 list(g)

各种推导式和生成器表达式
  1.列表推导式 [结果 for 变量 in 可迭代对象 if 筛选]
  2.字典推导式 {结果 for 变量 in 可迭代对象 if 筛选} 结果=>key:value
  3.集合推导式 {结果 for 变量 in 可迭代对象 if 筛选} 结果 key
















原文地址:https://www.cnblogs.com/yb161/p/9832528.html