python迭代器生成器和装饰器

本文介绍了Python编程中的迭代器和生成器的区别。迭代器是一个实现了iter和next方法的对象,可以按需生成序列。生成器则通过使用yield语句,实现更简洁的迭代方式。此外,文章还探讨了装饰器的作用,如添加日志、统计函数运行时间、权限验证等,它是Python中用于扩展函数功能的一种强大工具。
摘要由CSDN通过智能技术生成

7.迭代器和生成器区别
迭代器是一个抽象概念,任何对象,它的next方法和iter方法返回自己本身。iter是内置函数,iter()会返回一个定义了next方法的迭代器对象,
class MyNumbers:
def iter(self):
self.a = 1
return self

def next(self):
x = self.a
self.a += 1
return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
生成器是创建得带去简单而强大的工具写起来就像正规函数,在返回数据是使用yield语句,每次next()被调用,生成器会返回它脱离的位置
#!/usr/bin/python3

import sys

def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
8.装饰器
在不改变原来的代码基础上,添加新的功能
作用1.引用日志
2。函数执行时间统计
3.执行函数前预备处理
4.缓存
5.权限校验#coding:utf-8
import time
def decorate(func):
a = 1
def warp():
start_time = time.time()
print(a)
func()
end_time = time.time()
print(end_time-start_time)
return warp

@decorate
def function():
time.sleep(1)
function()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值