实例讲解Python中的yield协程

2025-11-22 01:24:30

1、打开Python开发工具IDLE,新建‘yieldpro.py’,并写代码如下;

def testcoroutine():

    print ('start')

    c = yield

    print ('over')

print (testcoroutine())

实例讲解Python中的yield协程

2、F5运行程序,并没有打印出‘start’,而是一个生成器。

<generator object testcoroutine at 0x0000000002F62570>

实例讲解Python中的yield协程

3、next触发生成器函数执行(也可以用 send(None)),当yield右侧没有值时,返回None

def testcoroutine():

    print ('start')

    c = yield 

    print ('over')

print (testcoroutine())

mycor = testcoroutine()

print (next(mycor))

实例讲解Python中的yield协程

4、F5运行程序,打印出‘start’和yield返回值‘None’

实例讲解Python中的yield协程

5、给yield左侧赋值要用send,代码如下;

def testcoroutine():

    print ('start')

    c = yield

    print (c)

    print ('over')

print (testcoroutine())

mycor = testcoroutine()

print (next(mycor))

mycor.send(2)

实例讲解Python中的yield协程

6、F5运行程序,最后抛出的异常是正常的,在程序中要捕获这个异常进行处理。

实例讲解Python中的yield协程

7、生成器还有close方法,当调用了close方法再用next或send就会抛出异常。

def testcoroutine():

    print ('start')

    c = yield

    d = yield

    print (c)

    print ('over')

print (testcoroutine())

mycor = testcoroutine()

print (next(mycor))

mycor.close()

print (next(mycor))

8、F5运行程序,抛出异常,如果注释掉close()方法,就不会

实例讲解Python中的yield协程

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢