标签:func span pre 迭代器 *args 多次 tar __next__ []
yield的功能:
1:把函数的执行结果封装好__iter__和__next__,即得到一个迭代器
2:与return功能类似,都可以返回值,但不同的是,return只能返回一次值,而yield可以返回多次值
3:函数暂停与再继续的状态是由yield保存的
def init(func): def wrapper(*args,**kwargs): g = func(*args,**kwargs) next(g) return g return wrapper @init def eater(name): print(‘%s start to eat‘%(name)) food_list = [] while True: food = yield food_list food_list.append(food) print(‘%s eat %s‘%(name,food)) g = eater(‘alex‘) print(g.send(‘骨头‘)) @init def func(): print(‘我开动啦!‘) while True: food = input(‘>>: ‘).strip() print(g.send(food)) func()
标签:func span pre 迭代器 *args 多次 tar __next__ []
原文地址:http://www.cnblogs.com/llhtjwq/p/7511765.html