《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基础之装饰器》的主要内容,如果未能解决你的问题,请参考以下文章