子函数嵌套的意义——以“颜色排序”为例(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实用技巧博文:


相关推荐
西岸行者11 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意11 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码11 天前
嵌入式学习路线
学习
毛小茛12 天前
计算机系统概论——校验码
学习
babe小鑫12 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms12 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下12 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。12 天前
2026.2.25监控学习
学习
im_AMBER12 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J12 天前
从“Hello World“ 开始 C++
c语言·c++·学习