子函数嵌套的意义——以“颜色排序”为例(Python)

多一层缩进精减参数传递,参数少平铺书代码写更佳。


笔记模板由python脚本于2025-04-16 11:52:53创建,本篇笔记适合喜欢子函数嵌套结构代码形式的coder翻阅。


【学习的细节是欢悦的历程】

博客的核心价值:在于输出思考与经验 ,而不仅仅是知识的简单复述



自学并不是什么神秘的东西,一个人一辈子自学的时间,总是比在学校学习的时间长;没有老师的时候总是比有老师的时候多。

------ 华罗庚


---== 彰显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. 提高代码复用性
        1. 保持主函数简洁
        1. 自然引用主函数变量
    • 四、子函数嵌套示例
    • 五、子函数嵌套的注意事项
    • 六、总结
    • 完整源码(Python)

◆ 子函数嵌套的意义

前言

在编程的世界里,代码的书写形式千变万化,但每一种形式都有其独特的意义和用途。今天,我想和大家分享一种特别的代码书写形式------子函数嵌套,并通过"颜色排序"这一经典题目来阐述其意义。


2025  2025  2025


一、什么是子函数嵌套?

子函数嵌套,顾名思义,就是在一个函数内部定义另一个函数。这种写法在Python等支持嵌套函数的语言中非常常见。嵌套的子函数可以访问其外部函数的变量,这种特性称为闭包。


2025  2025  2025


二、颜色排序题目回顾

  • 题目截屏图

首先,让我们回顾一下"颜色排序"题目。给定一个数组,其中包含三种颜色(用0、1、2表示),要求将数组中的颜色按照0、1、2的顺序排序。

2.1 ai原址修改代码示例

python 复制代码
#!/sur/bin/nve python3

# ai代码示例 # "智普清言"
def sort_colors(nums):
    # 统计每种颜色出现的次数
    count = [0, 0, 0]
    for num in nums:
        count[num] += 1
    
    # 根据颜色出现次数重新填充列表
    index = 0
    for color in range(3):
        while count[color] > 0:
            nums[index] = color
            index += 1
            count[color] -= 1


# for循环 # 原址修改
def sort_colors2(nums):
    # 根据颜色出现次数重新填充列表
    start = 0
    for color,n in zip(range(3), [nums.count(i) for i in range(3)]):
        for i in range(n):
            nums[start] = color
            start += 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原址修改代码示例

python 复制代码

2025  2025  2025


三、为什么选择子函数嵌套?

在解决颜色排序问题时,我们可能会遇到需要复用某段代码的情况。这时,子函数嵌套就派上用场了。

1. 提高代码复用性

通过将重复的代码段抽象成子函数,我们可以避免在主函数中重复书写相同的代码,从而提高代码的复用性。

2. 保持主函数简洁

子函数嵌套可以让主函数更加简洁和清晰。主函数只需要关注整体的逻辑流程,而具体的实现细节则可以交给子函数去处理。

3. 自然引用主函数变量

子函数可以自然引用主函数中的变量,无需通过参数传递。这大大减少了函数参数的个数,使得代码更加简洁。


2025  2025  2025


四、子函数嵌套示例

下面,我们以颜色排序为例,展示子函数嵌套的实践。

python 复制代码

2025  2025  2025


五、子函数嵌套的注意事项

虽然子函数嵌套有很多优点,但也有一些需要注意的地方:

  1. 缩进层次:嵌套函数会增加缩进层次,过多的缩进可能会影响代码的可读性。

  2. 作用域限制:子函数的作用域仅限于其外部函数内部,不能在其他地方直接调用。


2025  2025  2025


六、总结

子函数嵌套是一种非常有用的代码书写形式。它不仅可以提高代码的复用性和可读性,还可以让主函数更加简洁和清晰。在解决复杂问题时,合理运用子函数嵌套可以大大简化代码结构。

  希望通过这篇文章,大家能够更好地理解子函数嵌套的意义,并在实际编程中灵活运用这一技巧。让我们一起写出更优雅、更高效的代码吧!


2025  2025  2025


完整源码(Python)

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 入门指南 【Python 3.6.3】


好文力 荐:


CSDN实用技巧博文:


相关推荐
菜菜子爱学习5 分钟前
Nginx学习笔记(八)—— Nginx缓存集成
笔记·学习·nginx·缓存·运维开发
chillxiaohan35 分钟前
GO学习记录五——数据库表的增删改查
数据库·学习·golang
憨憨の大鸭鸭2 小时前
python爬虫学习(2)
爬虫·学习
_hermit:5 小时前
【从零开始java学习|第六篇】运算符的使用与注意事项
java·学习
rannn_1116 小时前
【Linux学习|黑马笔记|Day4】IP地址、主机名、网络请求、下载、端口、进程管理、主机状态监控、环境变量、文件的上传和下载、压缩和解压
linux·笔记·后端·学习
Moonnnn.7 小时前
【51单片机学习】定时器、串口、LED点阵屏、DS1302实时时钟、蜂鸣器
笔记·单片机·学习·51单片机
ai绘画-安安妮8 小时前
零基础学LangChain:核心概念与基础组件解析
人工智能·学习·ai·程序员·langchain·大模型·转行
云边小贩9 小时前
C++ STL学习 之 泛型编程
开发语言·c++·学习·类与对象
菜菜子爱学习10 小时前
Nginx学习笔记(九)—— Nginx Rewrite深度解析
linux·运维·笔记·学习·nginx
Gyoku Mint10 小时前
入门概述(面试常问)
深度学习·学习·机器学习