<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 高階函數 高階函數英文叫Higher-order function。什么是高階函數?我們以實際代碼為例子,一步一步深入概念。 ### 變量可以指向函數 以Python內置的求絕對值的函數`abs()`為例,調用該函數用以下代碼: ``` >>> abs(-10) 10 ``` 但是,如果只寫`abs`呢? ``` >>> abs <built-in function abs> ``` 可見,`abs(-10)`是函數調用,而`abs`是函數本身。 要獲得函數調用結果,我們可以把結果賦值給變量: ``` >>> x = abs(-10) >>> x 10 ``` 但是,如果把函數本身賦值給變量呢? ``` >>> f = abs >>> f <built-in function abs> ``` 結論:函數本身也可以賦值給變量,即:變量可以指向函數。 如果一個變量指向了一個函數,那么,可否通過該變量來調用這個函數?用代碼驗證一下: ``` >>> f = abs >>> f(-10) 10 ``` 成功!說明變量`f`現在已經指向了`abs`函數本身。 ### 函數名也是變量 那么函數名是什么呢?函數名其實就是指向函數的變量!對于`abs()`這個函數,完全可以把函數名`abs`看成變量,它指向一個可以計算絕對值的函數! 如果把`abs`指向其他對象,會有什么情況發生? ``` >>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable ``` 把`abs`指向`10`后,就無法通過`abs(-10)`調用該函數了!因為`abs`這個變量已經不指向求絕對值函數了! 當然實際代碼絕對不能這么寫,這里是為了說明函數名也是變量。要恢復`abs`函數,請重啟Python交互環境。 注:由于`abs`函數實際上是定義在`__builtin__`模塊中的,所以要讓修改`abs`變量的指向在其它模塊也生效,要用`__builtin__.abs = 10`。 ### 傳入函數 既然變量可以指向函數,函數的參數能接收變量,那么一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。 一個最簡單的高階函數: ``` def add(x, y, f): return f(x) + f(y) ``` 當我們調用`add(-5, 6, abs)`時,參數`x`,`y`和`f`分別接收`-5`,`6`和`abs`,根據函數定義,我們可以推導計算過程為: ``` x ==> -5 y ==> 6 f ==> abs f(x) + f(y) ==> abs(-5) + abs(6) ==> 11 ``` 用代碼驗證一下: ``` >>> add(-5, 6, abs) 11 ``` 編寫高階函數,就是讓函數的參數能夠接收別的函數。 ### 小結 把函數作為參數傳入,這樣的函數稱為高階函數,函數式編程就是指這種高度抽象的編程范式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看