闭包:
在函数内部在定义一个函数,并且这个函数用到了外面函数的变量,这个函数和用到的变量,称为闭包.
deftest_in(number_in):
print("in test_in函数, number_in is %d"%number_in)
returnnumber+number_in
#其实这里返回的就是闭包的结果
returntest_in
#给test函数赋值,这个20就是给参数number
ret = test(20)
#注意这里的100其实给参数number_in
print(ret(100))
#注意这里的200其实给参数number_in
print(ret(200))
运行结果:
intest_in函数, number_inis100
120
intest_in函数, number_inis200
220
闭包思考:
1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成
2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存
装饰器:
装饰器的功能就是在运行原来功能基础上,加上一些其他功能,不修改原来的代码进行功能的扩展.
功能:
引用日志
函数执行时间统计
执行函数前预备处理
执行函数后清理功能
权限校验
缓存