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


相关推荐
知识分享小能手4 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
茯苓gao7 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾7 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT8 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa8 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落9 小时前
Python学习之装饰器
开发语言·python·学习
speop10 小时前
llm的一点学习笔记
笔记·学习
非凡ghost10 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
ue星空11 小时前
月2期学习笔记
学习·游戏·ue5
萧邀人11 小时前
第二课、熟悉Cocos Creator 编辑器界面
学习