統(tǒng)計

          留言簿(1)

          DB

          Others

          QA

          Tech Website

          閱讀排行榜

          評論排行榜

          Python中的Closure


          #定義:如果在一個內(nèi)部函數(shù)里,對在外部作用域(但不是在全局作用域)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就被認(rèn)為是閉包(closure)
          分解來說,包含下面3個條件:
          1) 需要函數(shù)嵌套, 就是一個函數(shù)里面再寫一個函數(shù).
          2) 外部函數(shù)需要返回一個內(nèi)部函數(shù)的引
          3) 外部函數(shù)中有一些局部變量, 并且, 這些局部變量在內(nèi)部函數(shù)中有使用
          一些概念:
          1)自由變量: 外部函數(shù)中定義的局部變量, 并且在內(nèi)部函數(shù)中被使用
          2) 閉包: 那個使用了自由變量并被返回的內(nèi)部函數(shù)就稱為閉包

          #支持閉包的語言有這樣的特性:
          1)函數(shù)是一階值(First-class value),即函數(shù)可以作為另一個函數(shù)的返回值或參數(shù),還可以作為一個變量的值
          2)函數(shù)可以嵌套定義,即在一個函數(shù)內(nèi)部可以定義另一個函數(shù)

          #代碼示例

           1def counter(start_at=0):
           2    count = [start_at]
           3    def incr():
           4        count[0] += 1   #對局部變量的引用
           5        return count[0]
           6    return incr  #返回一個函數(shù)對象
           7
           8
           9if __name__ == '__main__':
          10    c = counter(3)
          11    print type(c)
          12    print c()
          13    print c()
          14


           

          posted on 2011-06-15 07:31 XXXXXX 閱讀(1310) 評論(0)  編輯  收藏 所屬分類: Python

          主站蜘蛛池模板: 沂水县| 方正县| 新郑市| 巍山| 安福县| 英超| 怀化市| 崇明县| 蒲城县| 南和县| 广德县| 洞口县| 福海县| 镇原县| 沙湾县| 新和县| 焉耆| 陈巴尔虎旗| 洛宁县| 分宜县| 上虞市| 万荣县| 西乌| 铜梁县| 南安市| 镇宁| 平果县| 阿城市| 和田市| 滨州市| 旬邑县| 明水县| 巴青县| 页游| 利津县| 北海市| 安岳县| 墨脱县| 四子王旗| 仙居县| 会昌县|