美文网首页
原来Python装饰器就是这么个东西

原来Python装饰器就是这么个东西

作者: danielss | 来源:发表于2016-06-14 09:11 被阅读689次

转载

这是我自己的理解,如有不妥,请指正

其实弄明白了python中的嵌套函数(也就是所谓的闭合函数)之后,再想搞懂python装饰器就简单多了。

总之python装饰器不过就是一个针对嵌套函数的语法糖

它的作用就是在函数调用方法不变的情况下,把此函数包装成另一个函数来使用

一、首先来大致了解下嵌套函数:

被嵌套与一层函数中的二层函数可以记录上上一层函数作用域中的变量

举例:

Python代码  收藏代码

def foo(a):

def subfoo(b):

return(b + a)

return(subfoo)

f = foo('content') #由于foo返回的是subfoo,所以f是对subfoo的引用

f('sub_') #因为subfoo记录了foo的参数变量'content',所以返回值为'sub_content'

二、嵌套函数和它的变种(装饰器)

以下两端代码,作用是相同的,前一个是大姑娘,后一个是女扮男装后的大姑娘

Python代码  收藏代码

def action(x):

return(x)

def action_pro(n):

def warpper(x):

return(n(x) * x)

return(warpper)

action = action_pro(action) #第一个action为自定义的伪装变量,第二个action为上边定义的action函数

action(3) #此函数实际为warpper(3),返回值为9

将上边代码改写:

Python代码  收藏代码

def action_pro(n):

def warpper(x):

return(n(x) * x)

return(warpper)

@action_pro #用action_pro函数把action包装成warpper

def action(x):

return(x)

action(3) #此函数实际为warpper(3),返回值为9

相关文章

  • 原来Python装饰器就是这么个东西

    转载 这是我自己的理解,如有不妥,请指正 其实弄明白了python中的嵌套函数(也就是所谓的闭合函数)之后,再想搞...

  • python装饰器的使用(详细解析)

    什么是装饰器? python装饰器(fuctional decorators)就是用于拓展原来函数功能的一种函数,...

  • 2018-07-18

    Python装饰器 装饰,顾名思义,是用来打扮什么东西的。Python装饰...

  • python中的装饰器

    python装饰器详解 Python装饰器学习(九步入门) 装饰器(decorator) 就是一个包装机(wrap...

  • [Python]装饰器

    本质:装饰器就是给 python 函数套上一件外套。作用是在不改变原来的函数下,增强函数功能。 函数装饰器 通过上...

  • Python第四天(函数高级)

    python闭包: 装饰器:所谓的装饰器,就是不改变原来的函数,再对原函数进行其他的输出操作定义一个原函数的装饰函...

  • Python装饰器实用例子

    Python里我们经常能见到@开头的句法,也就是人们常说的装饰器(decorator)。装饰器是Python非常重...

  • 装饰器

    1、装饰器引入 Python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数...

  • 装饰器(decorator)

    什么是装饰器 python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

网友评论

      本文标题:原来Python装饰器就是这么个东西

      本文链接:https://www.haomeiwen.com/subject/wnfudttx.html