• Python之协程函数


    Python之协程函数

      什么是协程函数:如果一个函数内部yield的使用方法是表达式形式的话,如x=yield,那么该函数成为协程函数。

    def eater(name):
        print('%s start to eat food' %name)
        food_list=[]
        while True:
            food=yield food_list
            print('%s get %s ,to start eat' %(name,food))
            food_list.append(food)
    
        print('done')
    
    
    e=eater('钢蛋')
    # print(e)
    
    print(next(e))
    print(e.send('奥尔良烤翅'))
    print(e.send('香辣鸡腿堡'))
    print(e.send('奥尔良堡'))

      e.send 和 next(e) 的区别:

        1. 如果函数内yield是表达式形式,那么必须是先next(e)

        2. 二者的共同之处是都是可以让函数在上次暂停的位置继续运行,不一样的地方在于send在触发下一次代码的执行时,会顺利给yield传一个值。

      为协程函数添加初始化装饰器:

    def wrapper(func):
        def inner(*args,**kwargs):
            res = func(*args,**kwargs)
            next(res)
            return res
        return inner
    
    
    @wrapper
    def eater(name):
        print('%s start to eat food' %name)
        food_list=[]
        while True:
            food=yield food_list
            print('%s get %s ,to start eat' %(name,food))
            food_list.append(food)
    
        print('done')
    
    
    e=eater('钢蛋')
    # print(e)
    
    print(next(e))
    print(e.send('奥尔良烤翅'))
    print(e.send('香辣鸡腿堡'))
    print(e.send('奥尔良堡'))            
  • 相关阅读:
    证书格式转换
    emq知识点
    emq共享订阅
    SpringBoot
    Android网络编程Socket长连接
    Android 网络通信框架Volley简介(Google IO 2013)
    Android中的5种数据存储方式
    Android
    android解析XML总结(SAX、Pull、Dom三种方式)
    乔迁新禧
  • 原文地址:https://www.cnblogs.com/george92/p/9100325.html
Copyright © 2020-2023  润新知