Python-閉パッケージと装飾器

1408 ワード

前にPythonを勉強していたノートを整理して記録します.
クローズドパッケージ
  :
           ,       ,            
            ,              ,            。
  :
                  ,                ,    。
  :
  1.         
  2.               
  3.                 
  :
  def func(a, b):
      def func_in(x):
         return a * x + b
      #       
      return func_in

  if __name__ == '__main__':
      ts = func(1, 1)
      #     
      print(ts(2))

デコレーション
  :
  1.             。
  2.      python  ,                             ,               。
  3.                                    。
    :
      (Agrument checking)
    (Caching)
    (Proxy)
       (Context Provider)
     /    :
               
  :
  def add_fun(func3):
    #           
    def fun_in(*args, **kwargs):
        print("---add----")
        #             
        ret = func3(*args, **kwargs)
        return ret
    return fun_in

  #         
  @add_fun
  def func(fun):
      print("fun ", fun)

  #          
  @add_fun
  def func1():
      return "func1"

  if __name__ == '__main__':
      func(123)
      ret = func1()
      print(ret)
        :