首页 > 代码库 > 装饰器

装饰器

 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)

 

装饰器