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