Python3 迭代器,生成器,装饰器

发布时间:2019-05-17 21:44:00编辑:auto阅读(1895)

    1.迭代器

    迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常

    a='abcdef'
    b=iter(a)	#创建迭代器对象
    print(type(b))
    
    while True:
    	try:
    		print(next(b))
    	except StopIteration:
    		break

    输出结果:

    2.生成器

    生成器就是含有yield关键字的函数,是一种用普通语法定义的迭代器.

    def gen():
    	yield 'a'
    	yield 'b'
    	yield 'c'
    
    
    g=gen()
    print(type(g))
    while True:
    	try:
    		print(next(g))
    	except StopIteration:
    		break

    输出结果:

    系统遇到yield关键词会将值返回,称为挂起,与return不同

    def gen(n):
    	while n>0:
    		print('Berofe')
    		return n
    		n-=1
    		print('After')
    
    g=gen(3)
    print(g)

    输出结果:

    def gen(n):
    	while n>0:
    		print('Berofe')
    		yield n
    		n-=1
    		print('After')
    
    g=gen(3)
    while True:
    	try:
    		print(next(g))
                    print('------------')
    	except StopIteration:
    		break

    输出结果:

    yield会挂起,然后下次在挂起位置继续执行

    3.装饰器

    输出结果:

关键字