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

转载

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

其实弄明白了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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容