python閉包與裝飾器

jopen 8年前發布 | 13K 次閱讀 閉包 Python Python開發

文章目錄

  1. 1. python閉包與裝飾器

    1. 1.1. 閉包
    2. 1.2. 裝飾器
    3. </ol> </li> </ol> </div>

      python閉包與裝飾器

      閉包

      如果在一個內部函數里,對在外部作用域(但不是在全局作用域)的變量進行引用,那么內部函數就被認為是閉包(closure)。它只不過是個“內層”的函數,由一個名字(變量)來指代,而這個名字(變量)對于“外層”包含它的函數而言,是本地變量。

      實例:

      def set_passline(passline):
          def cmp(val):
              if val >= passline:
                  print ('pass')
              else:
                  print ('failed')
          return cmp
      
      f_100 = set_passline(60)
      f_100(89)
      
      f_150 = set_passline(90)
      f_150(89)

      裝飾器

      簡單地來說裝飾器就是在不改變原有函數的前提下,為函數加入新的功能。

      實例:

      def dec(func):
          def in_dec(*arg):
              if len(arg) == 0:
                  return 0
              for val in arg:
                  if not isinstance(val , int):
                      return 0
      
              return func(*arg)
          return in_dec
      
      @dec
      def my_sum(*arg):
          return sum(arg)
      
      def my_average(*arg):
          return sum(arg)/len(arg)
      #my_sum = dec(my_sum)
      my_average = dec(my_average)
      
      print (my_sum(1,2,5,4,5))
      
      print (my_sum(1,2,3,4,5,'6'))

來自: http://wustrive2008.github.io/2016/01/08/python/python閉包與裝飾器/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!