`def`语句的执行会创建一个函数对象,并将其绑定到函数名上
函数是Python编程中最基础、最重要的代码组织单元。它不仅是代码复用的核心手段更是构建模块化、可维护程序的基石。本报告将围绕函数的定义def、参数传递机制、返回值处理、变量作用域规则以及递归调用等核心主题展开系统性论述并结合代码实例进行深入解析揭示Python函数设计的精妙之处。二、函数的定义与基本结构在Python中函数通过def关键字进行定义。其基本语法结构如下def函数名(参数列表):文档字符串函数体return返回值def语句的执行会创建一个函数对象并将其绑定到函数名上。需要注意的是函数定义本身不会执行函数体内的代码只有在调用时才会真正运行。defgreet(name):向指定用户打招呼messagefHello,{name}!returnmessage# 调用函数resultgreet(Alice)print(result)# 输出: Hello, Alice!三、参数传递机制Python的参数传递机制极为灵活支持多种参数类型3.1 位置参数位置参数是最常见的参数形式调用时按照参数定义的顺序依次传递。defadd(a,b):returnabprint(add(3,5))# 输出: 83.2 默认参数默认参数允许在定义函数时为参数指定默认值调用时若未提供该参数则使用默认值。defpower(base,exponent2):计算base的exponent次方默认计算平方returnbase**exponentprint(power(3))# 输出: 9 (使用默认指数2)print(power(3,3))# 输出: 27重要注意事项默认参数的值在函数定义时就被确定而非调用时。因此当默认参数是可变对象如列表、字典时可能会产生意外行为。# 错误示例可变默认参数defappend_to_list(item,lst[]):lst.append(item)returnlstprint(append_to_list(1))# [1]print(append_to_list(2))# [1, 2] - 意外结果# 正确做法defappend_to_list_safe(item,lstNone):iflstisNone:lst[]lst.append(item)returnlst3.3 关键字参数与可变参数defdisplay_info(**kwargs):接收任意数量的关键字参数forkey,valueinkwargs.items():print(f{key}:{value})display_info(nameAlice,age25,cityBeijing)四、返回值处理return语句用于从函数中返回结果。若函数中没有return语句或仅有return而无返回值则函数默认返回None。defdivide(a,b):ifb0:returnNone# 返回None表示除法无效returna/b resultdivide(10,3)print(result)# 输出: 3.3333333333333335resultdivide(10,0)print(result)# 输出: NonePython支持返回多个值实际上是返回一个元组defmin_max(numbers):返回列表中的最小值和最大值returnmin(numbers),max(numbers)minimum,maximummin_max([3,1,4,1,5,9])print(f最小值:{minimum}, 最大值:{maximum})五、变量作用域Python遵循LEGB作用域规则Local局部→ Enclosing嵌套→ Global全局→ Built-in内置。x100# 全局变量defouter():x50# 嵌套作用域变量definner():x25# 局部变量print(finner中的x:{x})inner()print(fouter中的x:{x})outer()print(f全局的x:{x})输出inner中的x: 25 outer中的x: 50 全局的x: 100若要在函数内部修改全局变量必须使用global关键字声明counter0defincrement():globalcounter# 声明使用全局变量counter1increment()print(counter)# 输出: 1六、递归调用递归是函数调用自身的编程技巧。一个正确的递归函数必须包含两个要素基例终止条件和递归步骤向基例收敛。deffactorial(n):计算n的阶乘# 基例ifn0orn1:return1# 递归步骤returnn*factorial(n-1)print(factorial(5))# 输出: 120递归的执行过程可以理解为函数调用栈的层层展开与回溯。以factorial(5)为例factorial(5) ├── 5 * factorial(4) │ ├── 4 * factorial(3) │ │ ├── 3 * factorial(2) │ │ │ ├── 2 * factorial(1) │ │ │ │ └── return 1 │ │ │ └── return 2 │ │ └── return 6 │ └── return 24 └── return 120递归的风险若递归深度过大会导致栈溢出错误RecursionError。Python默认递归深度限制约为1000层。importsysprint(sys.getrecursionlimit())# 通常为1000七、亮点与最佳实践函数是第一类对象Python中函数可以赋值给变量、作为参数传递、作为返回值返回这为高阶函数和函数式编程提供了基础。装饰器机制利用函数的第一类特性Python提供了装饰器语法可以在不修改原函数代码的前提下增强函数功能。闭包嵌套函数可以捕获并记住外层函数的变量状态形成闭包这在实现工厂函数和状态保持时非常有用。类型注解Python 3.5支持函数参数和返回值的类型注解虽然不强制执行但能显著提升代码可读性和可维护性。defgreet(name:str,times:int1)-str:returnfHello,{name}! *times八、总结Python函数机制的设计体现了简洁与强大的完美平衡。从基本的def定义到灵活的参数传递从清晰的作用域规则到优雅的递归支持每一个特性都经过精心设计。深入理解这些核心概念不仅能帮助开发者编写出更高效、更可靠的代码也为进一步学习Python高级特性如装饰器、生成器、协程等奠定了坚实基础。掌握函数的本质就是掌握了Python编程的钥匙。

相关新闻

QQ宠物单机版 手机版 安卓版 支持 鸿蒙 IOS系统

QQ宠物单机版 手机版 安卓版 支持 鸿蒙 IOS系统

下载地址 通过网盘分享的文件: 链接: https://pan.baidu.com/s/1YXE3NvJt_VM8_WCf-bW8fA?pwdQCSJ 提取码: QCSJ 复制这段内容后打开百度网盘手机App,操作更方便哦 征集素材 社区里能找到的 QQ 宠物原版资料很少,大量游戏画面和素材已经缺失…

2026/10/17 10:36:06 阅读更多 →
LiteOS驱动SSD1331 RGB888 OLED:从SPI初始化到共享内存传帧

LiteOS驱动SSD1331 RGB888 OLED:从SPI初始化到共享内存传帧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:36:06 阅读更多 →
学术视频总结免费工具到底好不好用?2026亲测后给你实用参考答案|TaoToken 统一 Key 接入实测

学术视频总结免费工具到底好不好用?2026亲测后给你实用参考答案|TaoToken 统一 Key 接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:36:06 阅读更多 →

最新新闻

《余烬边境》评测:搜打撤只是表象,RPG叙事选择才是精髓

《余烬边境》评测:搜打撤只是表象,RPG叙事选择才是精髓

1. 搜打撤基因几乎没有短板:这就是它抛出的烟雾弹我不知道多少人跟我一样,是抱着“找个塔科夫代餐”的心态点进《余烬边境》的。至少在我这儿,前四十个小时完全被骗得死死的——组队界面、装备槽、撤离点,甚至那个“局域网队友误伤…

2026/10/17 11:34:29 阅读更多 →
FlexPipe:碎片化GPU集群下的LLM推理动态并行策略换挡

FlexPipe:碎片化GPU集群下的LLM推理动态并行策略换挡

1. 所谓"碎片化GPU集群":先说清楚我面对的资源形态 如果你在某个公司管过一阵子大模型推理集群,大概率遇到过这个场景:明明集群里堆着不少卡,可线上推理服务的延迟曲线就是不稳定,白天高峰期还能勉强稳住&am…

2026/10/17 11:34:29 阅读更多 →
更新DOM完全指南:从原生操作到虚拟DOM渲染机制

更新DOM完全指南:从原生操作到虚拟DOM渲染机制

有人问更新DOM是什么操作,我认真想了想这个问题有人问“更新DOM是什么操作”的时候,往往是遇到了这样一种情况:代码里明明把数据改了,页面上却纹丝不动。或者更糟,页面动了,但输入框的焦点丢了、滚动条跳了…

2026/10/17 11:34:29 阅读更多 →
基于SpringBoot+Vue的智能图书馆管理系统全栈实战

基于SpringBoot+Vue的智能图书馆管理系统全栈实战

1. 从一次借书排队说起:这个系统解决的实际问题先说清楚我为什么动手做这个系统。基于SpringBoot Vue的智能图书馆管理系统,最早是源自一个困扰了很久的业务场景:某高校图书馆的日常借阅管理,被几套老系统和手工台账拆得稀碎。当…

2026/10/17 11:34:29 阅读更多 →
缺陷处理流程与软件测试生命周期:一线团队实操指南

缺陷处理流程与软件测试生命周期:一线团队实操指南

做软件测试这些年,被问得最多的问题不是“哪个测试工具好用”,也不是“怎么设计测试用例”,而是更基础也更要命的一个——发现一个Bug之后,到底该怎么处理才不算错?尤其是2020年前后那段时间,很多团队正从传…

2026/10/17 11:34:29 阅读更多 →
从词袋到即插即用:文本分类技术演进与实战指南

从词袋到即插即用:文本分类技术演进与实战指南

1. 文本分类的演进脉络与核心痛点拆解 文本分类这件事,说起来简单,做起来坑多。你手头有一堆文本,想给它们自动打上标签——情感是正面还是负面、邮件是正常还是垃圾、工单该分给哪个部门——这就是文本分类要解决的问题。从最早的词袋模型一…

2026/10/17 11:33:28 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →