子函數嵌套的意義——以“顏色排序”為例(Python)

多一層縮進精減參數傳遞,參數少平鋪書代碼寫更佳。


??筆記模板由python腳本于2025-04-16 11:52:53創建,本篇筆記適合喜歡子函數嵌套結構代碼形式的coder翻閱。


【學習的細節是歡悅的歷程】

??博客的核心價值在于輸出思考與經驗,而不僅僅是知識的簡單復述


  • Python官網
    ??這里,才 python 前沿。英文原版,原汁原味,才是尋根溯源的正統。😎
    地址:https://www.python.org/

  • Free
    ??大咖免費“圣級”秘笈《 python 完全自學教程》不僅僅是基礎那么簡單……
    地址:https://lqpybook.readthedocs.io/



??自學并不是什么神秘的東西,一個人一輩子自學的時間,總是比在學校學習的時間長;沒有老師的時候總是比有老師的時候多。
????????????—— 華羅庚


---== 彰顯C位 ==---

  1. ,可以在評論區書寫任何想法
  2. (我將在看到的第一時間回應)

  3. (預置空地)
---== 彰顯C位 ==---

我的座右銘圖片,上書中文“等風來,不如追風去……”



多一層縮進精減參數
子函數嵌套
( 參數少平鋪書寫更佳)



本文質量分:

95 95 95

本文地址: https://blog.csdn.net/m0_57158496/article/details/147274345

CSDN質量分查詢入口:http://www.csdn.net/qc


目?錄

  • ◆?子函數嵌套的意義
    • 前言
    • 一、什么是子函數嵌套?
    • 二、顏色排序題目回顧
      • 2.1 ai原址修改代碼示例
      • 1. ai原址修改代碼示例
    • 三、為什么選擇子函數嵌套?
      • 1. 提高代碼復用性
      • 2. 保持主函數簡潔
      • 3. 自然引用主函數變量
    • 四、子函數嵌套示例
    • 五、子函數嵌套的注意事項
    • 六、總結
    • 完整源碼(Python)


◆?子函數嵌套的意義


前言


??在編程的世界里,代碼的書寫形式千變萬化,但每一種形式都有其獨特的意義和用途。今天,我想和大家分享一種特別的代碼書寫形式——子函數嵌套,并通過“顏色排序”這一經典題目來闡述其意義。



2025??2025??2025


一、什么是子函數嵌套?


??子函數嵌套,顧名思義,就是在一個函數內部定義另一個函數。這種寫法在Python等支持嵌套函數的語言中非常常見。嵌套的子函數可以訪問其外部函數的變量,這種特性稱為閉包。



2025??2025??2025


二、顏色排序題目回顧


  • 題目截屏圖
    在這里插入圖片描述

??首先,讓我們回顧一下“顏色排序”題目。給定一個數組,其中包含三種顏色(用0、1、2表示),要求將數組中的顏色按照0、1、2的順序排序。


2.1 ai原址修改代碼示例


#!/sur/bin/nve python3# ai代碼示例 # “智普清言”
def sort_colors(nums):# 統計每種顏色出現的次數count = [0, 0, 0]for num in nums:count[num] += 1# 根據顏色出現次數重新填充列表index = 0for color in range(3):while count[color] > 0:nums[index] = colorindex += 1count[color] -= 1# for循環 # 原址修改
def sort_colors2(nums):# 根據顏色出現次數重新填充列表start = 0for color,n in zip(range(3), [nums.count(i) for i in range(3)]):for i in range(n):nums[start] = colorstart += 1# 算法邏輯優化 # 新新建數組
def sort_colors3(nums):# 根據顏色出現次數重新填充列表return sum([[color]*n for color,n in zip(range(3), [nums.count(i) for i in range(3)])], []) # 直接根據統計顏色數重建顏色排序list# 示例
if __name__ == '__main__':nums = [2, 0, 2, 1, 1, 0]sort_colors(nums) # 原址修改print(nums)  # 輸出應該是 [0, 0, 1, 1, 2, 2]nums = [2, 0, 2, 1, 1, 0]sort_colors2(nums) # 原址修改print(nums)  # 輸出應該是 [0, 0, 1, 1, 2, 2]print(sort_colors3(nums))

1. ai原址修改代碼示例




2025??2025??2025


三、為什么選擇子函數嵌套?


??在解決顏色排序問題時,我們可能會遇到需要復用某段代碼的情況。這時,子函數嵌套就派上用場了。


1. 提高代碼復用性


??通過將重復的代碼段抽象成子函數,我們可以避免在主函數中重復書寫相同的代碼,從而提高代碼的復用性。


2. 保持主函數簡潔

??子函數嵌套可以讓主函數更加簡潔和清晰。主函數只需要關注整體的邏輯流程,而具體的實現細節則可以交給子函數去處理。


3. 自然引用主函數變量


??子函數可以自然引用主函數中的變量,無需通過參數傳遞。這大大減少了函數參數的個數,使得代碼更加簡潔。



2025??2025??2025


四、子函數嵌套示例


??下面,我們以顏色排序為例,展示子函數嵌套的實踐。



2025??2025??2025


五、子函數嵌套的注意事項


??雖然子函數嵌套有很多優點,但也有一些需要注意的地方:


  1. 縮進層次:嵌套函數會增加縮進層次,過多的縮進可能會影響代碼的可讀性。

  1. 作用域限制:子函數的作用域僅限于其外部函數內部,不能在其他地方直接調用。



2025??2025??2025


六、總結


??子函數嵌套是一種非常有用的代碼書寫形式。它不僅可以提高代碼的復用性和可讀性,還可以讓主函數更加簡潔和清晰。在解決復雜問題時,合理運用子函數嵌套可以大大簡化代碼結構。
?
??希望通過這篇文章,大家能夠更好地理解子函數嵌套的意義,并在實際編程中靈活運用這一技巧。讓我們一起寫出更優雅、更高效的代碼吧!



2025??2025??2025


完整源碼(Python)




2025??2025??2025


上一篇:
編程邏輯解謎“0000(打一成語)“:當碼農遇上漢字游戲(解謎)



我的HOT博:

??本次共計收集449篇博文筆記信息,總閱讀量70.99w。數據采集于2025年03月17日 00:27:47,用時10分46.1秒。閱讀量不小于6.00k的有 10 10 10篇。


  1. 讓QQ群昵稱色變的神奇代碼
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    瀏覽閱讀:63,055
    點贊:25?收藏:90?評論:17
    (本篇筆記于2022-01-18 19:15:08首次發布,最后修改于2022-01-20 07:56:47)

    ?
  2. Python列表(list)反序(降序)的7種實現方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    瀏覽閱讀:14,196
    點贊:9?收藏:40?評論:8
    (本篇筆記于2022-12-11 23:54:15首次發布,最后修改于2023-03-20 18:13:55)

    ?
  3. 個人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    瀏覽閱讀:10,461
    點贊:3?收藏:21?
    (本篇筆記于2022-04-18 11:07:12首次發布,最后修改于2022-04-20 13:17:54)

    ?
  4. pandas 數據類型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    瀏覽閱讀:10,358
    點贊:7?收藏:40?
    (本篇筆記于2022-05-01 13:20:17首次發布,最后修改于2022-05-08 08:46:13)

    ?
  5. 統計字符串字符出現的次數
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    瀏覽閱讀:8,535
    點贊:5?收藏:27?
    (本篇筆記于2023-05-06 22:28:18首次發布,最后修改于2023-05-12 06:21:40)

    ?
  6. 羅馬數字轉換器|羅馬數字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    瀏覽閱讀:8,393
    收藏:3?
    (本篇筆記于2022-01-19 23:26:42首次發布,最后修改于2022-01-21 18:37:46)

    ?
  7. Python字符串居中顯示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    瀏覽閱讀:8,190
    點贊:1?收藏:12?評論:1
    ?
  8. 回車符、換行符和回車換行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    瀏覽閱讀:6,921
    點贊:2?收藏:4?
    (本篇筆記于2022-02-24 13:10:02首次發布,最后修改于2022-02-25 20:07:40)

    ?
  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    瀏覽閱讀:6,282
    點贊:1?收藏:10?
    ?
  10. 我的 Python.color() (Python 色彩打印控制)
    地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    瀏覽閱讀:6,192
    點贊:2?收藏:9?
    (本篇筆記于2022-02-28 22:46:21首次發布,最后修改于2022-03-03 10:30:03)

    ?

推薦條件 閱讀量突破6.00k
(更多熱博,請點擊藍色文字跳轉翻閱)

  • 截屏圖片
    在這里插入圖片描述
    ??(此文涉及ChatPT,曾被csdn多次下架,前幾日又因新 發筆記被誤殺而落馬。躺“未過審”還不如回收站 ,回收站還不如永久不見。😪值此年底清掃,果 斷移除。留此截圖,以識“曾經”。2023-12-31)



2 0 2 5??2 0 2 5??2 0 2 5


老齊漫畫頭像

精品文章:

  • 好 文力薦:齊偉書稿 《python 完全自學教程》 Free連載(已完稿并集結成書,還有PDF版本百度網盤永 久分享,點擊跳轉 免費🆓下載。)
  • OPP三大特性:封裝中的property
  • 通過內置 對象理解python
  • 正則表達式
  • python中“*”的作用
  • Python 完全自學手冊
  • 海象運算符
  • Python中的 `!=`與`is not`不同
  • 學習編程的正確方法
來源: 老齊教室

◆ Python 入門指南 【Python 3.6.3】

好文力 薦:

  • 全棧領域優質創作者——[寒 佬]博文“非技術文—關于英語和如何正確的提問”,“英語”和“會提問”是編程學習的兩大利器。
  • 【8大編程語言的適用領域】先別著急選語言學編程,先看它們能干嘛
  • 靠譜程序員的好習慣
  • 大佬帥地的優質好文“函 數功能、結束條件、函數等價式”三大要素讓您認清遞歸

CSDN實用技巧博文:

  • 8個好用到爆的Python實用技巧
  • python忽略警告
  • Python代 碼編寫規范
  • Python的docstring規范(說明文檔的規范寫法)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901717.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構與算法】LeetCode每日一題

此題跟27.移除數組中的指定值 類似,都是移除且雙指針玩法,只不過判斷條件發生了變化 此題跟26.刪除有序數組中的重復項I 一樣,除了fast-1變成了fast-2

c#OleDb連接池管理功能

使用 ConcurrentDictionary 和 ConcurrentBag 來管理數據庫連接 using Drv.Utilities; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Data.OleDb; using System.Linq;namespace Drv.AccessClient {/// <summary>…

【Flink運行時架構】核心組件

在Flink的運行架構中&#xff0c;有兩大比較重要的組件&#xff1a;作業管理器&#xff08;JobManager&#xff09;和任務管理器&#xff08;TaskManager&#xff09;。 Flink的作業提交與任務處理時的系統如下圖所示。 其中&#xff0c;客戶端并不是處理系統的一部分&#xff…

牟乃夏《ArcGIS Engine地理信息系統開發教程》學習筆記2

目錄 一、ArcGIS Engine概述 1、 定義 2、 核心功能 3、 與ArcObjects&#xff08;AO&#xff09;的關系 二、開發環境搭建 1、 開發工具要求 2、 關鍵步驟 三、 ArcGIS Engine核心組件 1、 對象模型 2、 類庫分類 四、 第一個AE應用程序&#xff08;C#示例&#xf…

端、管、云一體化原生安全架構 告別外掛式防護!

面對數字化轉型浪潮&#xff0c;企業網絡安全風險日益凸顯。數據泄露、黑客勒索等事件頻發&#xff0c;合規要求加速推進。盡管企業紛紛部署了防病毒、身份認證、文件加密、入侵防護、流量監控等多種安全系統&#xff0c;但分散且孤立的架構非但沒有有效抵御風險&#xff0c;反…

深度學習--深度學習概念、框架以及構造

文章目錄 一、深度學習1.什么是深度學習&#xff1f;2.特點3.神經網絡構造1&#xff09;.單層神經元2&#xff09;多層神經網絡3&#xff09;小結 4.感知器5.多層感知器6.多層感知器&#xff08;偏置節點&#xff09;7.神經網絡構造 一、深度學習 1.什么是深度學習&#xff1f…

helm賬號密碼加密

1、安裝工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…

大數據面試問答-HBase/ClickHouse

1. HBase 1.1 概念 HBase是構建在Hadoop HDFS之上的分布式NoSQL數據庫&#xff0c;采用列式存儲模型&#xff0c;支持海量數據的實時讀寫和隨機訪問。適用于高吞吐、低延遲的場景&#xff0c;如實時日志處理、在線交易等。 RowKey&#xff08;行鍵&#xff09; 定義&#xf…

動態渲染組件

React框架&#xff0c;JSX語法 今天遇到一個好玩的 常規的搜索列表&#xff0c;列表最后一列為操作列&#xff0c;刪改查。 眼看著Table 操作列 的配置文件越來越復雜&#xff0c;決定把操作列單獨寫一個組件&#xff0c;代碼瞬間靚仔了些 {title: Operation,dataIndex: oper…

Web APIs階段

一、Web APIs和JS基礎關聯性 1.1JS的組成 1.2JS基礎階段以及Web APIs階段 JS基礎階段&#xff1a;學習的是ECMAScript標準規定的基礎語法 Web APIs階段&#xff1a; Web APIs是W3C組織的標準Web APIs我們主要學習DOM和BOMWeb APIs是JS獨有的部分主要學習頁面交互功能需要使用…

Doip功能尋址走UDP協議

目前使用 connect()函數的UDP客戶端 ,這里接收數據 解析的地方 查看一下。 如果使用 bind()、sendto()、recvfrom() 組合 那么返回值 和發送要在做調整&#xff0c;&#xff0c;根據業務需要后續在調整 其余的 和原來的 邏輯都是一樣的&#xff0c;只是協議變了而已。 if serv…

Linux指令的詳細介紹

前言&#xff1a;&#x1f33c;&#x1f33c; Linux是一款強大且廣泛使用的操作系統&#xff0c;命令行接口&#xff08;CLI&#xff09;是與其交互的核心方式。通過Linux指令&#xff0c;用戶可以高效地執行文件管理、系統監控、進程控制等任務。雖然剛接觸時可能感到有些復雜…

Elasticsearch使用記錄

一、配環境 1.docker版本部署es 8.x系列可以關掉ssl&#xff08;本地測試時&#xff09;&#xff0c;去docker的/usr/share/elasticsearch/config/elasticsearch.yml里面的“xpack.security.enabled:”設置成true就可以 2.window docker部署推薦教程&#xff1a;基于Docker安…

MuJoCo(Multi-Joint Dynamics with Contact)機器人仿真器存在的問題

MuJoCo物理引擎計算接觸力的核心思路&#xff0c;是通過數學優化的方式同時滿足多個物理約束&#xff0c;而不是簡單地為每個碰撞點單獨計算作用力。它的工作流程可以理解為幾個階段的緊密配合。首先&#xff0c;仿真器會快速檢測所有可能發生接觸的物體表面&#xff0c;篩選出…

基礎(項目管理工具:JIRA、禪道)

目錄 JIRA JIRA介紹 JIRA中的優先級&#xff08;缺陷嚴重程度&#xff09; JIRA中的解決結果&#xff08;缺陷的解決結果&#xff09; JIRA中的問題狀態&#xff08;缺陷的狀態&#xff09; 使用JIRA創建缺陷 JIRA的安裝&#xff08;Windows&#xff09; JDK22的下載和安…

16.使用豆包將docker-compose的yaml轉為k8s的yaml,安裝各種無狀態服務

文章目錄 docker方式httpbinit-toolslinux-commandmyipreference docker-compose安裝k8s方式 docker方式 httpbin A simple HTTP Request & Response Service https://httpbin.org/ https://github.com/postmanlabs/httpbin https://github.com/mccutchen/go-httpbin do…

Day(22)--網絡編程習題

習題 以下是這些 TCP 通信練習題的 Java 代碼實現及解析&#xff1a; TCP 通信練習 1 - 多發多收 客戶端&#xff08;Client1.java&#xff09; java import java.io.IOException; import java.io.OutputStream; import java.net.Socket; ? public class Client1 {public…

20、.NET SDK概述

.NET SDK&#xff08;Software Development Kit&#xff09; 是微軟提供的一套開發工具包&#xff0c;用于構建、運行和管理基于 .NET 平臺的應用程序。它包含了一組豐富的工具、庫和運行時環境&#xff0c;支持開發者在多種操作系統&#xff08;如 Windows、Linux 和 macOS&am…

DELL電腦開機進入自檢界面

疑難解答 - 如何解決開機直接進入BIOS畫面 添加鏈接描述 一、DELL電腦開機自檢提示please run setup program 未設置一天中的時間-請運行安裝程序(Time-of-day not set - please run SETUP program) 配置信息無效-請運行安裝程序(Invalid configuration information - ple…

2025 最新版 Node.js 下載安裝及環境配置詳細教程【保姆級】

2025 最新版 Node.js 下載安裝及環境配置詳細教程【保姆級】 一、下載安裝二、環境配置三、緩存配置、全局配置以及更換國內淘寶鏡像源 一、下載安裝 下載地址&#xff1a;Node.js 官方下載地址 雙擊安裝&#xff0c;點擊 Change 更改安裝位置。我只有一個C盤&#xff0c;這里…