装饰器

Posted 时间的复利效应

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器相关的知识,希望对你有一定的参考价值。

 1 # /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 ‘‘‘   装饰器   ‘‘‘
 4 ‘‘‘ 5     装饰器的工作原理
 6     1. python的执行顺序是从上到下顺序执行.
 7     2. 当执行到outer函数的时候, 将其内容放入内存, 执行到f1的时候.在f1上发现@outer装饰器.
 8     3. 执行outer函数, 并将其下的函数名f1作为参数传递给outer
 9     4. 将outer的返回值赋值给f1. 即f1=outer的返回值.  也就是f1重新指向outer的返回值
10     5. outer的返回值inner是函数, 也就是outer返回了一个函数. f1指向outer返回的inner函数.
11     6. 在后面调用f1(), 即调用inner()执行函数. 执行inner函数的内容.
12     7. 在inner函数中调用执行了func函数. func=原来的f1函数 , 调用func(),即执行原来的f1函数.返回结果r
13     8. inner的返回值是r, 新的f1函数的返回值也是r. 因此可以获得返回值, 并打印输出
14     8. 由于f1函数没有返回值, 默认返回none. 因此后来的f1函数的返回值是None.
15 ‘‘‘
16 
17 
18 def outer(func):
19     def inner():
20         print("hello")
21         print( "hello" )
22         print( "hello" )
23         r = func()
24         print("end")
25         print( "end" )
26         print( "end" )
27         return r
28     return inner
29 
30 @outer
31 def f1():
32     print("FF1")
33 
34 
35 r = f1()
36 print(r)

 

以上是关于装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象学习之八,装饰器

thymeleaf 片段渲染后重新加载 javascript

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码