迭代器和生成器,装饰器
迭代器
具有iter和next就是一个迭代器
li = [1,2,4]
a = li.__iter__() #生成一个迭代器
print(a.__next__()) #取值
print(a.__next__())
迭代器:
迭代器就是当 li = iter() 这个函数的时候,将li里面的值放入到一个空间里面,这个空间里拥有和li一样的值,只不过这些值拥有了一个特性,可以使用next取值。
li = [1,2,3,4]
em = li.__iter__()
while 1:
try:
print(em.__next__())
except:
break
装饰器
装饰器原则:
不改变调用的名字
def func():
print('这是主功能')
def warpper(f):
print('这是新功能')
return f
func = warpper(func) #这里的func名字拿到的就是func的内存地址
func()
解释:装饰器的本质就是一个函数去帮助另一个函数
import time
//装饰器
def startTime(func):
def inner(*args,**kwargs):
start = time.time()
time.sleep(1)
end = time.time()
alltime = end - start
return alltime
return inner
@startTime //语法糖 abc = startTime(abc)
def abc(a,b):
print('6666')
print(abc(1,2))
example 2
import time
def warpper(f):
def inner(*args,**kwargs):
start_time = time.time()
f(*args,**kwargs)
end_time = time.time()
print('函数的运行时间')
return inner
@warpper #func = warpper(func)
def func(*args,**kwargs):
print(args)
print('这是主功能')
time.sleep(1)
func(5)