Python连载39-生成器、next函数、yield返回值
2020-12-13 15:12
标签:函数 master 解释 算法 += src 关注 http jpg ?一、生成器 1.定义(generator):一边循环一边计算下一个元素的机制/算法 2.满三个条件 (1)每次调用都能产生出for循环需要的下一个元素 (2)如果达到最后一个后,能够爆出StopIteration异常 (3)可以被next函数调用 3.如何生成一个生成器 (1)直接使用 (2)如果函数中包含yield,则这个函数就叫生成器 (3)next调用函数,遇到yield返回后面的值 ?注意:它与return的区别在于,return语句之后,他结束了,但是yield之后,这个函数仍然可以继续运行 解释:这里的odd()生成器生成了三次,所以没有得到我们想要的结果,稍作修改,让生成器只生成一次 (4)for循环调用生成器 二、源码d27_2_iterator_and_yielf_usage.py https://github.com/ruigege66/Python_learning/blob/master/d27_2_iterator_and_yielf_usage.py 2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿) 3.博客园:https://www.cnblogs.com/ruigege0000/ 4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料 Python连载39-生成器、next函数、yield返回值 标签:函数 master 解释 算法 += src 关注 http jpg 原文地址:https://www.cnblogs.com/ruigege0000/p/11576020.htmll = [x*x for x in range(5)]#放在中括号中就是列表生成器
g = (x*x for x in range(5))#放在小括号中就是生成器
print(type(l))
print(type(g))#type函数就是返回的是括号内的变量类型
def odd():
print("Step 1")
yield 1#在函数odd中,yield负责返回,不用return是因为
print("Step 2")
yield 2
print("Step 3")
yield 3
if __name__ == "__main__":
one=next(odd())#odd()是调用生成器
print(one)
two = next(odd())
print(two)
three = next(odd())
print(three)
if __name__ == "__main__":
m= odd()
one=next(m)#odd()是调用生成器
print(one)
two = next(m)
print(two)
three = next(m)
print(three)
def fib(max):
n,a,b = 0,0,1
while n max:
yield b
a,b = b,a+b
n += 1
if __name__ == "__main__":
m2 = fib(10)
# print(m2)
for i in range(6):
rst = next(m2)
print(rst)
上一篇:C#读取图片Exif信息
下一篇:Java基础之面向对象
文章标题:Python连载39-生成器、next函数、yield返回值
文章链接:http://soscw.com/essay/34886.html