一、生成器
只要在函数中使用yield关键字,使用了yield的函数就会被成为生成器函数。
yield函数的作用:
1.类似return,将指定值或多个调用值传给返回调用者。
2.yield语句一次返回一个结果 ,在每个结果中间,挂起函数,执行next函数,再重新从挂载点继续执行。
即yield语句使函数中断,并保存中断状态。
一般与next()共同使用。
二、装饰器
装饰器本质上就是python的一个函数(闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象。
闭包:
一般将外部函数名作为装饰器名,使用@调用
def num1(a):#参数a接受被装饰的函数名
def num2():
print("函数开始")
a()#调用被装饰的函数
print("函数结束")
return num2
@num1#使用装饰器
def num3():
print("函数体")
num3()
运行结果
第一步:执行@num1,即num1(num3)
第二步:执行num2,给num3,即num3=num2
第三步:num3(),调用num3(),即num2()
第四步:a(),即调用被装饰的num3()中的语句