04_08、生成器
迭代取值:
1. 不依赖于索引取值,__next__()取值
2. 不能重复取值,只能从左往右一个一个取值
索引取值:
1. 必须要是一个容器类型
2. 可以重复取值
二、
函数中的yield关键字的用法:__next__一下,走一个yield,光标就停在了yield
如果再次__next__,会从上一次停留的yield位置继续往下走
def my_range(start, stop=None, step=1): if not stop: stop = start start = 0 while start < stop: yield start start += step for i in my_range(1, 9, 3): print(i)
def index(name): print('%s 准备干饭' % name) while True: food = yield # yield后不写默认为None print('%s 开干 %s' % (name, food)) res=index('ly') res.__next__() # res.__next__() res.send('苹果') res.send('橘子')
五、
yield:
1. 函数内遇到yield关键字把函数变成了生成器
2. yield 也可以返回值,并且支持返回多个(元组形式)
3. 遇到yield,函数不会结束,而是"停住"
4. yield 也支持传值
return
1. 后面可以跟返回值,也支持返回多个(元组形式)
2. 函数遇到return,会立马结束

浙公网安备 33010602011771号