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

网友投稿 289 2022-08-27


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

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

将被修饰函数(B)作为参数传递给@符号引用的函数(A)将函数B替换成步骤1的返回值。使用@将被修饰的函数改造称为新函数。

In [1]: def funA(fn): ...: print('A') ...: fn() ...: return 'abc' ...:In [2]: @funA ...: def funB(): ...: print('B') ...:ABIn [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=== 90mt_test==my_test函数== 90***************==my_test函数== 90

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring AOP如何在注解上使用SPEL表达式注入对象
下一篇:Python之插入排序(Python中排序)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~