python-列表生成式
生成一个平方列表
生成一个2的倍数列表
所以呢,当x*2的位置变换成函数呢?
很明显依然可以一个一个取值
所以接下来把重复的代码做成一个循环
s = (x*x for in range(5)) #生成器就是一个可迭代对象(Iterable) for i in s: print(i)
生成器一共有两种创建方式
1、(x*x for i in range(5))
2、yield #可以实现伪并发
#什么是可迭代对象 (for循环后的对象是具有iter方法的)
s=[1,2,3)
s.__iter__()
def foo(): print("OK1") yield 1 print("ok2") yield 2 g = foo() print(g) next(g)
#send(null) 第一次传一个空值
def foo():
print("ok")
count = yield 1
print(count)
yield 2
g = foo() #<generator object foo at 0x0000024801441570>
print(g)
print(g.send(None))
print(g.send("干点别的事"))