<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 1\. 匿名函數 大家來思考一個問題: ~~~ def my_add(a, b): return a + b my_add() ~~~ my\_add 函數需要2行定義, 能不能簡化一下定義方式, 一行搞定! 當然可以, 我們可以把這種函數寫成一個**匿名函數**. * 匿名函數的概念 * 匿名函數語法格式 * 匿名函數和普通函數的區別 * 匿名函數的使用場景 ### 1.1 語法格式 定義的函數沒有名字,這樣的函數叫做**匿名函數.** 我們先看下匿名函數的語法結構: ~~~ lambda [形參1], [形參2], ... : [單行表達式] 或 [函數調用] ~~~ 使用匿名函數, 上面的函數我們就可以定義為單行的函數. ~~~ # 不帶參數 my_fun = lambda : 10 + 20 # 帶參數 my_add = lambda a, b: a + b my_add() ~~~ ### 1.2 和普通函數的區別 ~~~ def my_function(start, end): my_sum = 0 while start <= end: my_sum += start start += 1 return my_sum ~~~ 1. 匿名函數中**不能使用 if 語句、while 循環、for 循環**, 只能編寫單行的表達式,或函數調用, 普通函數都可以. 2. 匿名函數中返回結果**不需要使用 return**, 表達式的運行結果就是返回結果, 普通函數返回結果必須 return. 3. 匿名函數中也可以不返回結果. 例如:`lambda : print('hello world')` ### 1.3 應用場景 #### 1.3.1 定義簡單的單行函數 ~~~ def my_function(a, b): return a + b ~~~ 使用 lambda 定義格式如下: ~~~ my_function = lambda a, b: a + b ~~~ #### 1.3.2 作為函數的參數進行傳遞(重點、難點) #### 1.3.2.1 為什么函數要作為另外函數的參數? ~~~ def my_function1(): a = 100 b = 200 result = a + b print('result:', result) def my_function2(): a = 100 b = 200 result = a - b print('result:', result) def my_function3(): a = 100 b = 200 result = a * b print('result:', result) ~~~ 上面函數定義的缺點是: 1. 函數名要定義多個, 使用起來不方便. 需要記憶, 那個函數完成什么事情. 2. 上面函數只定義了三種計算方式: a + b、a -b、a \* b, 如果用戶希望 a 和 b 進行除法運算, 那么顯然還需要再寫函數. 解決目標: 1、提高函數的通用性 2、減少代碼量 可以通過傳遞給 my\_function 一個函數來完成. ~~~ def my_function(func): a = 100 b = 200 # 把 cucalate_rule 當做函數來調用 result = func(a, b) print('result:', result) def caculate_rule(a, b): return a / b my_function(caculate_rule) ~~~ ![](https://img.kancloud.cn/d3/8d/d38d800fe8ea767bf77dc3cf72a9921d_1704x504.png) ### 1.3.2.2. 匿名函數做為函數參數 ~~~ def my_function(func): a = 100 b = 200 # 把 cucalate_rule 當做函數來調用 result = func(a, b) print('result:', result) def caculate_rule1(a, b): return a / b def caculate_rule2(a, b): return a // b def caculate_rule3(a, b): return a % b my_function(caculate_rule1) my_function(caculate_rule2) my_function(caculate_rule3) ~~~ 我們為了調用 my\_function 函數要寫很多規則, 整個文件中可能就有很多定義的函數代碼, 問題是: 1. 這些函數只會用一次 2. 這些函數也比較簡單 就沒有必要 py 文件中出現這么多無用的代碼. 如何改進: ~~~ def my_function(func): a = 100 b = 200 # 把 cucalate_rule 當做函數來調用 result = func(a, b) print('result:', result) my_function(lambda a, b: a / b) my_function(lambda a, b: a // b) my_function(lambda a, b: a % b) ~~~ ### 1.3.2.3. 總結 1. 函數可以做為參數傳遞給另外一個函數, 可以使得函數的實現更加通用. 2. 匿名函數也可以作為參數傳遞給另外一個函數, 對于只需要用到一次函數, 可以通過匿名函數減少代碼量.
                  <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>

                              哎呀哎呀视频在线观看