Python 基础 一文通关函数:从基础定义、文档规范到高级参数与 Lambda
前言在 Python 编程中函数是代码复用的基石。很多初学者虽然会写def但往往忽略了文档规范、作用域陷阱以及高阶参数的使用。本文将结合 Python 函数基础与进阶特性带你系统性地掌握函数编程的核心知识。第一部分夯实基础——函数的定义与规范1. 什么是函数函数是组织好的、可重复使用的、用来实现特定功能的代码段。作用提高代码的复用性减少重复代码提高开发效率。2. 基础语法与调用定义函数的标准格式如下def function_name(parameters): 函数说明文档 # 函数体 return value定义使用def关键字后跟函数名和圆括号。调用直接使用函数名(参数)即可执行。接收返回值result function_name(args)。3. 良好的编程习惯函数说明文档给函数添加说明文档Docstring能辅助理解函数的作用特别是在团队协作中非常重要。格式示例def add_num(x, y): 求和函数 :param x: 第一个数字 :param y: 第二个数字 :return: 两个数字的和 return x y 查看文档 print(add_num.doc)4. 变量的作用域易错点变量并不是在哪里都能用的这就涉及到了作用域。局部作用域函数内部定义的变量只能在函数内部使用。全局作用域函数外部定义的变量整个文件可用。global 关键字如果你想在函数内部修改全局变量必须使用global声明。num 100 # 全局变量 def test(): global num # 声明我要用全局的那个 num num 200 # 修改全局变量 print(num) test() print(num) # 输出 200因为被函数修改了5. 返回值与 None 类型return不仅结束函数还将结果返回给调用者。def add(a, b): 返回两个数的和 return a b def greet(name): 打印问候语无显式返回值 print(fHello, {name}!) # 没有 return 语句默认返回 None 调用示例 result1 add(3, 5) # result1 接收返回值 8 print(result1) # 输出: 8 result2 greet(Alice) # 打印: Hello, Alice! print(result2) # 输出: None函数没有 returnNone表示“空”或“无意义”。如果函数没有return默认返回None。None在if判断中相当于False。常用于变量初始化result None。第二部分函数进阶掌握了基础后我们需要让函数变得更灵活、更强大。6. 函数的嵌套使用在一个函数内部调用另一个函数。这是封装复杂逻辑的基础。def func_B(): print(我是 B 函数) def func_A(): print(我是 A 函数) func_B() # A 里面调用了 B func_A()7. 四种参数传递方式核心重点7.1 位置参数最基础的传参方式。顺序必须一致个数必须匹配。def user_info(name, age): print(f姓名: {name}, 年龄: {age}) user_info(Tom, 20) # 正确7.2 关键字参数通过keyvalue形式传递。作用消除参数顺序限制提高代码可读性。注意如果混用位置参数必须在关键字参数前面。user_info(age20, nameTom) # 正确顺序无所谓混用示例正面示例正确混用def user_info(name, age, city): print(f姓名: {name}, 年龄: {age}, 城市: {city}) 正确位置参数在前关键字参数在后 user_info(Tom, city北京, age20) # 输出姓名: Tom, 年龄: 20, 城市: 北京反面示例错误混用# 错误关键字参数在位置参数前面 user_info(nameTom, 北京, age20) # 会报错SyntaxError: positional argument follows keyword argument记住这个简单规则先位置后关键字。一旦开始使用关键字参数后面的所有参数都必须使用关键字形式。7.3 缺省参数默认参数定义函数时给参数一个默认值。调用时如果不传该参数就使用默认值。规则所有位置参数必须出现在缺省参数前面。def print_info(name, gender男): print(f{name} 的性别是 {gender}) print_info(小明) # 输出小明 的性别是 男 print_info(小红, 女) # 输出小红 的性别是 女7.4 不定长参数*args 与 **kwargs当你不确定调用者会传入多少个参数时使用不定长参数。*args接收所有位置参数打包成一个元组 (tuple)。**kwargs接收所有关键字参数打包成一个字典 (dict)。*args 单独使用示例*args用于接收任意数量的位置参数def sum_all(*args): 计算所有传入数字的和 total 0 for num in args: total num return total 调用示例 print(sum_all(1, 2, 3)) # 输出6 print(sum_all(10, 20, 30, 40)) # 输出100 print(sum_all(5)) # 输出5 print(sum_all()) # 输出0没有参数时args 是空元组**kwargs 单独使用示例**kwargs用于接收任意数量的关键字参数def print_user_info(**kwargs): 打印用户信息 for key, value in kwargs.items(): print(f{key}: {value}) 调用示例 print_user_info(name张三, age25, city北京) 输出 name: 张三 age: 25 city: 北京 print_user_info(title工程师, department研发部) 输出 title: 工程师 department: 研发部 print_user_info() # 没有参数时kwargs 是空字典*args 和 **kwargs 混合使用示例两者可以同时使用但必须遵循顺序*args在前**kwargs在后def demo(*args, **kwargs): print(f位置参数打包: {args}) # 输出元组 print(f关键字参数打包: {kwargs}) # 输出字典 demo(1, 2, 3, nameJack, age18) 输出 位置参数打包: (1, 2, 3) 关键字参数打包: {name: Jack, age: 18} demo(a, b, x100, y200) 输出 位置参数打包: (a, b) 关键字参数打包: {x: 100, y: 200}重要规则*args必须放在所有普通位置参数之后**kwargs必须放在所有参数包括*args之后正确的参数顺序普通参数 →*args→**kwargs8. 匿名函数 LambdaLambda 是一种极简的函数定义方式适用于逻辑简单、只需使用一次的场景。语法lambda 参数: 表达式特点只能包含一个表达式不能包含复杂的语句块表达式的计算结果就是返回值。# 普通函数 def add(a, b): return a b Lambda 写法 sum_func lambda a, b: a b print(sum_func(10, 20)) # 输出 30应用场景常作为参数传递给其他高阶函数如sort,map,filter。students [(Alice, 88), (Bob, 95), (Charlie, 70)] # 按成绩排序取元组第二个元素 students.sort(keylambda x: x[1]) print(students)总结从基础的def定义、作用域控制到进阶的*args/**kwargs灵活传参再到优雅的lambda表达式掌握这些内容你的 Python 代码将更加简洁、专业且易于维护。建议动手敲一遍代码体会不同参数传递方式的区别

相关新闻

查看Windows当前应用的组策略

查看Windows当前应用的组策略

如果你希望在电脑上查看所有有效的组策略设置,以下是操作方法。 什么是Windows中的组策略 在Windows世界中,组策略为网络管理员提供了一种将特定设置分配给用户组或计算机组的方法。然后,无论何时组中的用户登录到联网的PC,或无论何时启动组中的PC,都会应用这些设置。 …

2026/7/30 3:47:31阅读更多 →
C++ --红黑树

C++ --红黑树

红黑树的五大性质 每个节点是红色或黑色 根节点是黑色 所有叶子(NIL空节点)都是黑色 红色节点的两个子节点都是黑色(即不能有连续的红节点) 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点(黑色高度一…

2026/7/30 3:45:31阅读更多 →
【AI需求预测分析黄金法则】:20年实战总结的5大避坑指南与实时优化框架

【AI需求预测分析黄金法则】:20年实战总结的5大避坑指南与实时优化框架

更多请点击: https://intelliparadigm.com 第一章:AI需求预测分析黄金法则的底层逻辑 AI需求预测并非单纯依赖历史数据拟合,其本质是构建“业务动因—数据表征—模型响应”的闭环因果链。脱离业务语义的数据驱动建模,极易陷入过拟…

2026/7/30 3:45:31阅读更多 →
从零开始:Node.js接入Milvus向量数据库实战(AI日记本场景)

从零开始:Node.js接入Milvus向量数据库实战(AI日记本场景)

手把手教你用Milvus实现语义搜索,解决LLM幻觉问题 前言 最近在做AI日记本项目,遇到了一个痛点:用户想"找出最近情绪积极的日记",传统的MySQL用LIKE %开心%根本搜不准。这时候就需要向量数据库出场了。 本文会带你快速…

2026/7/30 5:09:49阅读更多 →
手机变游戏掌机:Winlator让Android流畅运行Windows游戏

手机变游戏掌机:Winlator让Android流畅运行Windows游戏

手机变游戏掌机:Winlator让Android流畅运行Windows游戏 【免费下载链接】winlator Android application for running Windows applications with Wine and Box86/Box64 项目地址: https://gitcode.com/GitHub_Trending/wi/winlator 你是否想过在手机上玩《GT…

2026/7/30 5:09:49阅读更多 →
具身机器人高温胶选哪种?2026机器人耐高温粘接胶选型指南

具身机器人高温胶选哪种?2026机器人耐高温粘接胶选型指南

具身机器人在运行过程中,关节模组、电机组件、传感器以及内部结构件都会产生热量,同时还需要长期承受振动、冲击和重复运动。因此,机器人装配过程中选择合适的高温胶,对于提升结构可靠性和使用寿命十分关键。那么具身机器人高温胶…

2026/7/30 5:09:49阅读更多 →
电子系统设计:从单元电路到系统集成的核心思维与实践

电子系统设计:从单元电路到系统集成的核心思维与实践

1. 从“电路”到“系统”:第十一章的核心视角转换学电子技术,很多人卡在从分析单个电路到理解一个完整电子系统的门槛上。李雪飞老师的《电子技术基础》这本书,前面的章节把三极管、运放、门电路这些“砖瓦”讲得很透,但到了第十一…

2026/7/30 5:09:49阅读更多 →
如何永久保存微信聊天记录?3种格式导出完整指南

如何永久保存微信聊天记录?3种格式导出完整指南

如何永久保存微信聊天记录?3种格式导出完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …

2026/7/30 5:09:49阅读更多 →
React createPortal 实战:模态框逃出 overflow:hidden、事件冒泡与焦点管理

React createPortal 实战:模态框逃出 overflow:hidden、事件冒泡与焦点管理

React createPortal 实战:模态框逃出 overflow:hidden、事件冒泡与焦点管理 写模态框(Modal)时你大概率遇到过这个诡异现象:弹窗明明该盖住全屏,结果只在某个卡片内部显示一小块,还被父容器的滚动条截断了。加 z-index: 9999 也没用。 问题不在层级,在于 DOM 结构。这篇用 crea…

2026/7/30 5:07:48阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →