2 Star 6 Fork 5

AmCoder / AmCoder

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
装饰器.md 1.33 KB
一键复制 编辑 原始数据 按行查看 历史
AmCoder 提交于 2020-05-30 10:25 . 第一次提交
  • 闭包函数

若果函数中包含其他函数,那么其他函数则成为内嵌函数,++如果内嵌函数引用了外部函数所定义的变量,则称内嵌函数为闭包函数;++ 而外部函数的变量称之为自由变量;闭包函数可以将其自己的代码和作用域以及外部函数的作用结合在一起。

#Demo

import functools
def auth(func):
    @functools.wraps(func)
    def inner(*args,**kwargs):#闭包函数
        ret = func(*args,**kwargs)
    return ret
return inner
  • 什么函数可以被称为闭包函数呢?主要是满足两点:

    • 函数内部定义的函数
    • 引用了外部变量但非全局变量 比如上述auth函数中内部定义了inner函数,而且引用了自由变量func
    • ++装饰器本质上就是一个函数,它可以让其他函数在不需要做任何改动的情况下增加额外的新功能,返回值也是一个函数对象(函数的指针);装饰器函数的外部函数传入要装饰的函数名字func,返回经过修饰后函数的名字++
  • 总结

    • 实质:是一个函数
    • 参数:要装饰的函数名称
    • 返回:装饰完函数名称
    • 作用:为已经存在的函数添加额外的功能
    • 特点:不需要对对象做任何代码的改动
  • 但是在flask中有自带的装饰器before_request

其他
1
https://gitee.com/AmCoder/AmCoder.git
git@gitee.com:AmCoder/AmCoder.git
AmCoder
AmCoder
AmCoder
master

搜索帮助