python协程 读取文件_Python协程函数

1 协程函数

1.1 协程函数理解

协程函数就是使用了yield表达式形式的生成器

def eater(name):

print("%s eat food" %name)

while True:

food = yield

print("done")

g = eater("gangdan")

print(g)

结果:

generator object eater at 0x00000000028DC048

这里就证明了g现在就是生成器函数

1. 2 协程函数赋值过程

用的是yield的表达式形式

要先运行next(),让函数初始化并停在yield,相当于初始化函数,然后再send() ,send会给yield传一个值

** next()和send() 都是让函数在上次暂停的位置继续运行,

next是让函数初始化

send在触发下一次代码的执行时,会给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)

e=eater('钢蛋') # wrapper('')

# print(e)

print(next(e)) # 现在是运行函数,让函数初始化

print(e.send('包子')) #

print(e.send('韭菜馅包子'))

print(e.send('大蒜包子'))

这里的关键是:

要先运行next()函数

用装饰器函数把next()函数先运行一次:

def start(func):

def wrapper(*args,**kwargs):

res=func(*args,**kwargs) # next()

next(res) # 这是关键

return res

return wrapper

@start # e = start(e)

def eater(name):

print('%s start to eat food' %name)

food_list=[]

while True:

food=yield food_list

print('%s get

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值