生成器,迭代器和装饰器

1.生成器

解析器在实时生成数据,数据不会驻留在内存中。因此,其执行效率很高!
yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器
当你调用这个函数的时候,函数内部的代码并不立即执行 ,这个函数只是返回一个生成器对象
当你使用for进行迭代的时候,函数中的代码才会执行

  • 推导式创建生成器:
list1 = (i**2 for i in range(10) if i%2==0)
for item in list1:
    print(item)
  • yield方式
def createGenerator():
    for i in range(10):
        if i%2==0:
            yield i**2

myGenerator = createGenerator()

for item in myGenerator:
    print(item)

2.迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表、元组和字典对象都可用于创建相应的迭代器

list1 = [2,3,4,56,78]
iter1 = iter(list1)
while True:
    try:
        print(next(iter1))
    except StopIteration:
        break

3.生成器是特殊的迭代器:

list1 = (i**2 for i in range(10) if i%2==0)
print(next(list1))
print(next(list1))
#结果为 0  4

4.装饰器

装饰器是个函数,用于日志、事务、权限等的编程(AOP:面向切面编程),是非侵入式的编程方式

def loginfo(func):
        print("---------------")
        def wrapper():
            print("那谁登陆了我们的系统")
            func()
            print("那谁登陆了我们的系统")
        return wrapper

@loginfo 
def login():
    print("欢迎谁谁谁登陆")
    pass

猜你喜欢

转载自blog.csdn.net/qq_37287621/article/details/83926967
今日推荐