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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 問題 你用lambda定義了一個匿名函數,并想在定義時捕獲到某些變量的值。 ## 解決方案 先看下下面代碼的效果: >>> x = 10 >>> a = lambda y: x + y >>> x = 20 >>> b = lambda y: x + y >>> 現在我問你,a(10)和b(10)返回的結果是什么?如果你認為結果是20和30,那么你就錯了: >>> a(10) 30 >>> b(10) 30 >>> 這其中的奧妙在于lambda表達式中的x是一個自由變量,在運行時綁定值,而不是定義時就綁定,這跟函數的默認值參數定義是不同的。因此,在調用這個lambda表達式的時候,x的值是執行時的值。例如: >>> x = 15 >>> a(10) 25 >>> x = 3 >>> a(10) 13 >>> 如果你想讓某個匿名函數在定義時就捕獲到值,可以將那個參數值定義成默認參數即可,就像下面這樣: >>> x = 10 >>> a = lambda y, x=x: x + y >>> x = 20 >>> b = lambda y, x=x: x + y >>> a(10) 20 >>> b(10) 30 >>> ## 討論 在這里列出來的問題是新手很容易犯的錯誤,有些新手可能會不恰當的lambda表達式。比如,通過在一個循環或列表推導中創建一個lambda表達式列表,并期望函數能在定義時就記住每次的迭代值。例如: >>> funcs = [lambda x: x+n for n in range(5)] >>> for f in funcs: ... print(f(0)) ... 4 4 4 4 4 >>> 但是實際效果是運行是n的值為迭代的最后一個值。現在我們用另一種方式修改一下: >>> funcs = [lambda x, n=n: x+n for n in range(5)] >>> for f in funcs: ... print(f(0)) ... 0 1 2 3 4 >>> 通過使用函數默認值參數形式,lambda函數在定義時就能綁定到值。
                  <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>

                              哎呀哎呀视频在线观看