《Python学习之路 -- Python基础之装饰器》

Posted jonas_von

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Python学习之路 -- Python基础之装饰器》相关的知识,希望对你有一定的参考价值。

  装饰器,本质上是一个函数,更加直观的说,装饰器就是等于 高阶函数 + 函数嵌套 + 闭包 ,装饰器是具有某个基础功能的函数,这种功能可以加成到其他函数上,使得其他函数的功能更加强大。除此以外,装饰器还有两个重要的特征:1、不改变被修饰函数的调用方式  2、不改变被修饰函数的源码 ,也就是说,装饰器就是在这两个特征上改造其他函数的函数。

高阶函数是指函数接收的参数是函数或者函数的返回值是函数,这样的函数就是高阶函数。

函数嵌套就是函数里面还定义了函数,可以嵌套多层。

函数闭包是指函数内部的函数使用了外部函数的局部变量。

# 外层包裹器,用于接收被修饰的函数
def wrapper(fun):
    # 内层函数,用于为被修饰的函数添加基本功能
    def inner(*args,**kwargs):
        # 基本功能代码
        # 调用被装饰的函数,并接收返回值
        result = fun(*args,**kwargs)
        # 将接收的结果返回
        return result
    # 相当于对外暴露内层函数
    return inner

@wrapper  # 等价于:foo = wrapper(foo)
def foo(a,b,c=3):print(foo,a,b,c)
   @wrapper
def bar():print(bar) # 直接调用,没有改变被修饰函数的调用方式 foo(1,2) bar()

如果包裹器还有需要要传参数,则可以在包裹器的外面继续套一层函数

 


以上是关于《Python学习之路 -- Python基础之装饰器》的主要内容,如果未能解决你的问题,请参考以下文章

PYTHON学习之路_PYTHON基础

Python学习之路基础篇--09Python基础,初识函数

Python 学习之路 - Python 基础 - One

python学习之路

Python学习之路——Python基础之运算符

python学习之路基础01