0
点赞
收藏
分享

微信扫一扫

Python小记——@(AOP:面向切面编程)

皮皮球场 2022-06-21 阅读 43

使用**@**符号引用已有的函数(A)后,可用于修饰其它函数(B

  1. 将被修饰函数(B)作为参数传递给@符号引用的函数(A)
  2. 将函数B替换成步骤1的返回值。
    使用@将被修饰的函数改造称为新函数。
In [1]: def funA(fn):
...: print('A')
...: fn()
...: return 'abc'
...:

In [2]: @funA
...: def funB():
...: print('B')
...:
A
B

In [3]: print(funB)
abc
  • 被修饰的函数总能被替换成@符号所引用的函数的返回值,因此被修饰的函数会变成什么,完全取决于@符号所引用的函数的返回值。
In [4]: def foo(fn):
...: def bar(*args):
...: print("===1===", args)
...: n = args[0]
...: print("===2===", n*(n-1))
...: print(fn.__name__)
...: fn(n*(n-1))
...: print("*"*15)
...: return fn(n*(n-1))
...: return bar
...:

In [5]: @foo
...: def my_test(a):
...: print("==my_test函数==", a)
...:

In [7]: my_test(10)
===1=== (10,)
===2=== 90
mt_test
==my_test函数== 90
***************
==my_test函数== 90

上面程序定义了一个装饰器函数foo,导致程序会事先执行foo(my_test),将my_test(10)替换为bar(10)。


举报

相关推荐

AOP(面向切面编程)

AOP面向切面编程

AOP(面向切面编程)

Spring AOP 面向切面编程

AOP面向切面编程思想。

Spring AOP面向切面编程

Spring的AOP编程(面向切面编程)

0 条评论