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


相关推荐
song_ly00143 分钟前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试
DIY机器人工房1 小时前
[6-2] 定时器定时中断&定时器外部时钟 江协科技学习笔记(41个知识点)
笔记·stm32·单片机·学习·江协科技
海尔辛2 小时前
学习黑客5 分钟小白弄懂Windows Desktop GUI
windows·学习
烟雨迷3 小时前
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
linux·服务器·学习·编辑器·vim
@十八子德月生4 小时前
8天Python从入门到精通【itheima】-1~5
大数据·开发语言·python·学习
Clockwiseee5 小时前
文件上传总结
运维·服务器·学习·文件上传
苜柠6 小时前
Wpf学习片段
学习
欢乐熊嵌入式编程6 小时前
智能手表固件升级 OTA 策略文档初稿
嵌入式硬件·学习·智能手表
起床学FPGA6 小时前
异步FIFO的学习
学习·fpga开发
依年南台7 小时前
搭建大数据学习的平台
大数据·学习