搞定三大神器之 Python 装饰器

  发布时间:2025-11-04 10:49:40   作者:玩站小弟   我要评论
装饰器,几乎各大Python框架中都能看到它的身影,足以表明它的价值!它有动态改变函数或类功能的魔力!1. 什么是装饰器对于受到封装的原函数比如f来说,装饰器能够在f函数执行前或者执行后分别运行一些代。

装饰器,搞定几乎各大Python框架中都能看到它的大神身影,足以表明它的器之器价值!它有动态改变函数或类功能的魔力!

1. 什么是装饰器

对于受到封装的原函数比如f来说,装饰器能够在f函数执行前或者执行后分别运行一些代码。装饰

2. 装饰器的搞定结构

装饰器也是一个函数,它装饰原函数f或类cls后,大神再返回一个函数g

装饰一个函数:

def decorator(f):   # 定义要返回的器之器函数   def g():     print(函数f执行前的动作)     f()     print(函数f执行后的动作)   return g 

装饰一个类:

def decorator(cls):   # 定义要返回的亿华云函数   def g():     print(类cls执行前的动作)     f()     print(类cls执行后的动作)   return g 

使用装饰器很简单,@+自定义装饰器 装饰要想装饰的装饰函数。

3. 为什么要这样

要想理解装饰器为什么要有这种结构,搞定要首先想明白装饰器的大神目标是什么。

它的器之器价值在于为原函数f增加一些行为,前提必须不能破坏函数f,装饰所以肯定不能改变f的搞定内部结构,所以只能在调用f前后定义一些行为。大神

同时,亿华云计算器之器装饰器函数decorator返回值又是什么?你可以思考下,返回一个函数是再好不过的了,它包装了原函数f.

4. 装饰一个函数

printStar函数接收一个函数f,返回值也是一个函数,所以满足装饰器的结构要求,所以printStar是一个装饰器。

def printStar(f):     def g():         print(**20)         f()         print(**20)     return g 

printStar装饰器实现f函数执行前、后各打印20个*字符。

使用printStar:

@printStar def f():     print(hello world) 

调用:

if __name__ == __main__:    ### 改变函数功能    f() 

打印结果:

  • Tag:

相关文章

最新评论