python 使用生成器来对延迟操作进行支持,仅在需要用到时产出结果。
创建生成器的2种方式:
1. 使用for循环(for循环需要放在()括号内)
eg: sg=(x*x for x in range(10))
2. 调用带有yield语句的函数。
先创建带有yield语句的函数,然后调用该函数得到生成器。
eg:
def test (val ,step ):
print("函数开始执行")
cur=0
for i in range(val):
cur+=i*step
yield cur
yield 作用
1. 冻结操作,每次返回值
2. 调用yield函数程序不会立即执行,需要调用__next__方法程序才会继续执行,执行到yield处程序返回值后冻结操作。
生成器的方法
1. send(): send方法与next方法相似,但send方法可以接受传递一个参数。即:send方法在程序外部传递参数,yield接收参数。第一次获取生成器的值时应该使用next方法,如果非要使用send则传递的参数应该为None。
2. close():关闭生成器。
3. throw(): 在yield处抛出异常。
网友评论