闭包的作用就是为了编写装饰器
装饰器的本质就是一个闭包
装饰器定义
就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。
装饰器的功能特点:
①不修改已有函数的源代码
②不修改已有函数的调用方式
③给已有函数增加额外的功能
闭包这么编程装饰器的?
装饰器的雏形(下面都是没有返回值的函数)
栗子1:
在发评论函数前加一个登录的功能
提出需求:在不改变源函数以及源函数调用方式的前提下,为其添加一个权限验证(请先登录)
不改变源函数、不改变原有调用方式、需要增加权限验证(额外功能)
定义一个装饰器:本质:闭包函数(①有嵌套②有引用③有返回),而且装饰器函数本身必须有一个fn参数,代表要装饰的函数名称,当我们调用装饰器的时候,系统会自动将要装饰函数的名称发给fn参数
def logging(fn): # 一般都叫fn
def inner():
# 引用fn函数之前,增加额外功能
print('这里是登录操作')
# 引用局部变量fn
fn()
return inner
@logging # 语法糖
标签:函数,python,322,Python,fn,print,装饰,def,inner
From: https://blog.csdn.net/qq_25177949/article/details/144558469