码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-02 16:07:13      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:nbsp   嵌套   app   python   col   等价   方式   其他   函数嵌套   

  装饰器,本质上是一个函数,更加直观的说,装饰器就是等于 高阶函数 + 函数嵌套 + 闭包 ,装饰器是具有某个基础功能的函数,这种功能可以加成到其他函数上,使得其他函数的功能更加强大。除此以外,装饰器还有两个重要的特征: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基础之装饰器》

标签:nbsp   嵌套   app   python   col   等价   方式   其他   函数嵌套   

原文地址:https://www.cnblogs.com/jonas-von/p/8979592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!