」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在迴圈中正確捕捉 Lambda 函數中的變數?

如何在迴圈中正確捕捉 Lambda 函數中的變數?

發佈於2024-11-07
瀏覽:370

How to Properly Capture Variables in Lambda Functions in Loops?

在 Lambda 函數中捕獲變數

在循環中使用 lambda 函數時,了解其變數範圍非常重要。與複製局部變數的常規函數不同,lambda 函數引用它們。

考慮給定的代碼:

for m in ('do', 're', 'mi'):
    funcList.append(lambda: callback(m))

這裡,lambda 函數從封閉範圍捕捉 m 的值。然而,循環結束後,m 保留最後一個值('mi')。當呼叫每個 lambda 函數時,它會引用此共享 m 變量,從而多次產生輸出「mi」。

要克服此問題並確保每個lambda 捕獲m 的不同值,請使用一種稱為“預設參數":

for m in ('do', 're', 'mi'):
    funcList.append(lambda m=m: callback(m))

透過使m 成為同名的預設參數,每個lambda 捕獲自己的變數實例,確保預期的輸出:

“做”
“重新”
“我”

版本聲明 本文轉載於:1729329734如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 如何偵測 Go 標準輸入 (Stdin) 中的資料可用性?
    如何偵測 Go 標準輸入 (Stdin) 中的資料可用性?
    使用Go 檢測標準輸入(Stdin) 中的資料可用性在Go 中,可以使用以下技術檢查標準輸入流(os.Stdin) 中的資料:驗證其檔案大小。它的工作原理如下:os.Stdin 可以像任何常規文件一樣對待,允許我們檢查其屬性。為此,我們使用 os.Stdin.Stat() 檢索 FileInfo 物...
    程式設計 發佈於2024-11-08
  • findSequence函數如何使用遞迴進行暴力搜尋?
    findSequence函數如何使用遞迴進行暴力搜尋?
    理解 FindSequence 函數中的遞歸提供的 findSequence 函數依照回溯的強力搜尋原理進行操作。以下是對其遞歸性質的逐步解釋:在每次遞歸調用時,該函數都會嘗試兩種可能的轉換:加法:它添加5 到當前數字,並將方程式與新數字一起儲存。 乘法:將當前數字乘以 3 並相應更新方程式。 遞...
    程式設計 發佈於2024-11-08
  • 了解 DSA 中的時間和空間複雜性:開發人員指南
    了解 DSA 中的時間和空間複雜性:開發人員指南
    介紹 在軟體開發領域,效率是關鍵。無論您是建立小型應用程式還是大型複雜系統,了解程式碼在各種條件下的執行情況都至關重要。這就是時間複雜度和空間複雜度的概念發揮作用的地方。這些指標可協助開發人員評估演算法的效率,引導他們編寫運行速度更快且消耗更少記憶體的程式碼。 在本文中,我們將深...
    程式設計 發佈於2024-11-08
  • 如何批次上傳CSV檔案資料到MySql表中?使用 LOAD DATA 的一種非常快速的方法。
    如何批次上傳CSV檔案資料到MySql表中?使用 LOAD DATA 的一種非常快速的方法。
    ?介紹 您是否仍在使用“for”或“while”循環來迭代行並將它們插入資料庫?您還在編寫單獨的程式碼來讀取 .csv 檔案並將其上傳到 MySQL 資料庫嗎? 用MySQL提供的「LOAD DATA」語句對線性邏輯說「NO」。準備好更改程式碼以最大限度地減少行數並大幅提高效能。...
    程式設計 發佈於2024-11-08
  • 使用住宅代理商解鎖 Facebook 的指南
    使用住宅代理商解鎖 Facebook 的指南
    Facebook作為全球最大的社群媒體平台之一,擁有多種業務場景,包括廣告服務、消費者通訊服務、電子商務、社群媒體平台等。這些業務場景為使用者提供了豐富的社交體驗和商機。在Facebook行銷管理中,穩定且有效率的代理商至關重要。不僅可以保護您的真實IP位址,還可以幫助您突破地域限制,管理多個帳戶,...
    程式設計 發佈於2024-11-08
  • 程式設計日快樂
    程式設計日快樂
    祝福所有社區程式設計師快樂! 這份職業給了我很大的滿足感,也因此我也實現了一些目標。 它讓我透過開發者社群和作為講師的工作與數百人更加接近。非常感謝。 也慶祝一下,享受你的一天。 9 月 12 日慶祝程式設計師節,以強調和慶祝​​在不同數位系統開發中工作的人們的作用。網頁、應用程式、遊戲、軟...
    程式設計 發佈於2024-11-08
  • 如何在 MySQL 中使用 LOAD DATA INFILE 填入自增欄位?
    如何在 MySQL 中使用 LOAD DATA INFILE 填入自增欄位?
    在MySQL 中使用LOAD DATA INFILE 填入自增欄位使用ID 列為自增欄位的現有表時,透過LOAD 匯入資料DATA INFILE 可能會帶來挑戰。本文提供了處理此類場景的有效解決方案。 為了清楚起見,請考慮以下表格結構:--------------------- ID | AFiel...
    程式設計 發佈於2024-11-08
  • JavaScript 中的記憶化:有效提升效能
    JavaScript 中的記憶化:有效提升效能
    簡介:加速 JavaScript JavaScript 是一種多功能但有時速度較慢的程式語言。如果您可以透過簡單的更改使應用程式運行得更快怎麼辦?記憶是一種可以透過記住先前的結果來極大地提高程式速度的技術。 什麼是記憶化? 記憶就像記下你已經解決的數學難題的筆記本。當你再次遇到同樣的問題時,你不...
    程式設計 發佈於2024-11-08
  • ## 使用下拉式選單時還需要 SQL 注入保護嗎?
    ## 使用下拉式選單時還需要 SQL 注入保護嗎?
    使用下拉式選單時 SQL 注入保護是否仍然適用? 人們普遍認為,應始終對使用者輸入持懷疑態度,因為SQL注入的風險。然而,出現了一個問題:這種擔憂是否會擴展到唯一用戶輸入來自下拉式選單的場景? 下拉限制和安全性雖然下拉式選單提供了預定義選項,它們不保證防止使用者輸入的惡意資料。攻擊者可以使用瀏覽器開...
    程式設計 發佈於2024-11-08
  • 可視化貓的偏好
    可視化貓的偏好
    偶然看到一篇文章,名字叫《為什麼貓…? 》,分析了貓咪的一些喜好和行為。裡面的視覺設計非常吸引我。其特點是採用手繪風格和氣泡式佈局。此外,可愛的字體也令人賞心悅目。我非常喜歡貓。我有一隻貓,名叫瓜瓜(意思是可愛又愚蠢)。同樣,我也是前端開發人員。我開發了一個名為 AntV G6 的圖形視覺化框架。因...
    程式設計 發佈於2024-11-08
  • 在黑客馬拉松中使用 Kintone 的技巧
    在黑客馬拉松中使用 Kintone 的技巧
    Introduction When you're participating in a hackathon, efficiency and quick iteration are key to success. One tool that can help you manage d...
    程式設計 發佈於2024-11-08
  • Camp Code - 一種有趣且簡單的學習程式碼的方法
    Camp Code - 一種有趣且簡單的學習程式碼的方法
    ? ?未來的程式設計傳奇,齊聚一堂!營地代碼著火了! ?? 短短 3 天(對程式設計愛好者來說這是 72 小時?): • 超過 1,300 位冒險家加入了我們的程式設計任務? • 超過 300 名勇敢的探索者創建了早期訪問帳戶來測試我們的測試版? ️ 為什麼這麼熱鬧? ? 因為 Camp Cod...
    程式設計 發佈於2024-11-08
  • 隨時隨地的套件管理器(幾天後可用。)
    隨時隨地的套件管理器(幾天後可用。)
    https://github.com/DiegoDev2/Fleet 介紹 Fleet:開發人員的簡單但功能強大的套件管理器? 作為開發人員,我們經常花費大量時間設定環境並安裝不同的工具。我創建了 Fleet 來讓這個過程更容易、更有效率。 什麼是艦隊? Fleet...
    程式設計 發佈於2024-11-08
  • 項目 檢查參數有效性
    項目 檢查參數有效性
    章節:方法設計 重點:方法設計的可用性、穩健性和靈活性。 涵蓋範圍:參數和傳回值處理、方法簽章設計和文件。 第 49 項:檢查參數有效性 - 參數限制: 方法和建構子通常對參數值有限制(例如非負索引、非空引用)。 這些限制必須在方法開始時記錄並驗證。 - 驗證的重要性: 儘早偵測錯誤,以避免...
    程式設計 發佈於2024-11-08
  • 如何在不刪除和重新建立約束的情況下重命名 MySQL 中的外鍵列?
    如何在不刪除和重新建立約束的情況下重命名 MySQL 中的外鍵列?
    重新命名MySQL 中的外鍵列:逐步指南當嘗試重命名MySQL 中充當外鍵列的列時外鍵在另一個表中時,常會遇到錯誤150,表示外鍵約束問題。為了克服這個問題,您可能會遇到這樣的問題:我們能否避免刪除外鍵、重新命名列,然後重新建立外鍵的複雜任務? 標準方法根據MySQL文件和提供的答案,最安全、最直接...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3