python - デコレータ内容を説明

Pythonのデコレータは、機能のために元の関数の機能拡張で、この機能の特別な機能は、それが関数の戻り値があるということです、Pythonのデコレータを使用する利点は、新たな機能を追加するために、元の関数の前提の下で、コードに変更はありません機能。

3.1定義デコレータ、定義された関数。
デフXXX():
関数本体

デコレータの3.2アプリケーション
の機能は、メソッドに、@xxxを使用する必要があります。
注:内部関数デコレータ:限りアプリケーションデコレータ関数として、関数を再定義する、として再定義されます。

何のデコレータの典型的なパラメータを含んでいません。

1  DEF 外側(FUNC):
 2      DEF 内():
 3          プリント' こんにちは' 4          の印刷' こんにちは' 5          プリント' こんにちは' 6          #の原F1の函数
7          R = FUNC()   #1 、R =なし
8          印刷' 末端' 9          プリント' 末端' 10          プリント' 末端' 11。         retureのR&LT
 12は     retureインナー 
 13である 
14  @outer
 15  DEF F1():
 16      リターン " F1 " 
。17      
18である F1()    発信者     
19。     
20  原理:
21  1、外側の関数を実行する関数名と以下、パラメータ、すなわちF1 = FUNCとして
22は 2、外側の戻り値F1 =外側の戻り値に再割り当て
23  3、新しいF1関数は=インナー     
24          
25  "" "     
26は 出力:
 27  こんにちは
 28  ハロー
 29  こんにちは
 30 F1
 31  の端部
 32  の端部
 33  の端部
 34  ""」
コードの表示

デコレータは、2つの例示的なパラメータを通過しました。

 1 def outer(func):
 2     def inner(a1, a2):   #传递两个参数
 3         print("123")
 4         ret = func(a1, a2)   #传递两个参数
 5         print("456")
 6         return ret
 7     reture inner
 8 
 9 @outer
10 def index(a1, a2):
11         print("操作很复杂")
12         return a1 + a2
13         
14 index(1, 2)          #调用者
View Code

装饰器含N个参数的函数示例:

注意:一个函数是可以应用多个装饰器。多个装饰器时先执行最外层的装饰器。

 1 def outer(func):
 2     def inner(*arg, **kwargs):   #可接收多个参数
 3         print("123")
 4         ret = func(*arg, **kwargs)   #可接收多个参数
 5         print("456")
 6         return ret
 7     reture inner
 8     
 9 @outer
10 def f1(arg):      #传递一个参数
11         print("我传递了一个参数")
12         reture "f1"
13 
14 @outer
15 def index(a1, a2):    #传递两个参数
16         print("我传递了一个参数")
17         return a1 + a2
18         
19 @outer
20 def f2(a1, a2, a3):
21     print("我传递三个参数")
22     return "f2"
23         
24         
25 f1(123)           #调用者传递一个参数
26 index(1, 2)          #调用者传递两个参数
27 f2(1, 2, 3)    #调用者传递三个参数
View Code

 

おすすめ

転載: www.cnblogs.com/june-L/p/11614343.html