yield简单用法

yield简单使用

def func(num):
    for i in range(num):
        yield i
# 返回一个生成器对象
x = func(3)
print(type(x))

<class 'generator'>

1.next()调用

print(next(x))
print(next(x))
print(next(x))
print(next(x))# 报错

0
1
2
Traceback (most recent call last): ......  print(next(x)) StopIteration
  1. for循环调用
    生成器是可迭代对象,可以用循环调用。(但是可迭代的并不一定是生成器对象,这是两个不同的概念)
for i in x:
    print(i)
0
1
2

yield from

def mfunc(iterable):
    yield from iterable
# 返回一个生成器对象m
m = mfunc('123')

print(next(m))
print(next(m))
print(next(m))
1
2
3

内置内建模块itertools中的一些函数
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

  1. itertools.count()
    返回一个count对象,是一个无限的迭代器。
    相当于:
def count(firstval=0, step=1):
     x = firstval
     while 1:
           yield x
           x += step
  1. itertools.cycle()
    返回一个cycle对象,把传入的一个序列无限重复下去
    相当于:
def mfunc(iterable):
    while True:
        yield from iterable

猜你喜欢

转载自blog.csdn.net/qq_29666899/article/details/83958556