クローズドパック、アクセサリーを簡単に理解

957 ワード

閉鎖とは何ですか.1つの関数の内部にもう1つの関数を定義し、この関数が外部の関数の変数を用いた場合、この関数および使用するいくつかの変数を閉パケットと呼ぶ.
#       ,              ,          ,               
#            ,      ,           ,            ,                 
def  out_func(x):
	def  in_func():
		#         
		print(x)

	return in_func

#         
ret = out_func("    ")
#        
ret()

デザイナ書き込みコードの導入はオープンクローズの原則に従い、この原則ではオブジェクト向けに開発されているが、関数式プログラミングにも適用され、簡単に言えば、実装された機能コードは修正されないことを規定しているが、拡張することができる.
クローズド:実装された機能コードブロックオープン:拡張開発
装飾器は本質的にPython関数であり、他の関数がコードの変動を必要とせずに追加機能を追加することができ、装飾器の戻り値も関数オブジェクトである.
ユニバーサルデコレーション
def set_fun(func):
	def call_fun(*args, **kwargs):
		
		return func(*args, **kwargs)

	return call_fun


@set_fun   #     @set_fun ===>test = set_fun(test)
def test():
	print("test")


test()


装飾の適用シーン
  • 導入ログ
  • 関数実行時間統計
  • 関数前予備処理
  • を実行する.
  • 関数実行後クリーンアップ機能
  • 権限チェック等シーン
  • キャッシュ