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:29 阅读更多 →
单相桥式全控整流电路Matlab Simulink仿真建模与深度分析

单相桥式全控整流电路Matlab Simulink仿真建模与深度分析

1. 项目概述:从理论到实践的整流电路仿真在电力电子领域,单相桥式全控整流电路是一个绕不开的经典拓扑。无论是作为教材中的标准案例,还是工业应用中AC-DC变换的基础单元,理解它的工作原理和动态特性都至关重要。然而,…

2026/7/30 3:46:28 阅读更多 →
Airoha 157x SDK构建失败排查:从CMake配置错误到项目成功编译

Airoha 157x SDK构建失败排查:从CMake配置错误到项目成功编译

1. 项目构建失败的根源:从“找不到CMake配置”说起最近在折腾Airoha 157x的SDK,准备编译个简单的Demo程序,结果上来就给我当头一棒。命令行里赫然躺着一行刺眼的错误::-1: error: cmake project configuration failed. no cmake c…

2026/7/30 3:46:28 阅读更多 →

最新新闻

Blender插件开发指南:从用户痛点到高效工作流优化

Blender插件开发指南:从用户痛点到高效工作流优化

那天下午,我正试图把一个从网上下载的 STL 模型导入 Blender,准备做些简单调整。模型是导入了,可接下来就傻眼了:整个模型是一个整体,我想单独调整某个零件,却发现它们全都粘在一起。尝试用 Blender 的布尔…

2026/7/30 3:53:31 阅读更多 →
3分钟快速上手:Yuedu书源配置终极指南,解锁海量免费小说阅读体验

3分钟快速上手:Yuedu书源配置终极指南,解锁海量免费小说阅读体验

3分钟快速上手:Yuedu书源配置终极指南,解锁海量免费小说阅读体验 【免费下载链接】Yuedu 📚「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 还在为找不到好看的小说而烦恼吗?想要在阅读APP中畅享…

2026/7/30 3:53:31 阅读更多 →
量子计算编程:Cirq框架核心原理与工程实践

量子计算编程:Cirq框架核心原理与工程实践

1. 量子计算与Cirq框架的崛起 量子计算正在从实验室走向现实应用,而编程框架是连接理论与实践的桥梁。作为Google量子AI团队开源的Python库,Cirq已经成为量子算法开发的事实标准之一。我第一次接触Cirq是在2019年参与一个量子化学模拟项目,当…

2026/7/30 3:53:31 阅读更多 →
XCOM 2模组管理器终极指南:革命性模组管理解决方案

XCOM 2模组管理器终极指南:革命性模组管理解决方案

XCOM 2模组管理器终极指南:革命性模组管理解决方案 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/x…

2026/7/30 3:53:31 阅读更多 →
前几天手贱,把codex登录给退了,后面一直要官方登录,报400refresh token错误

前几天手贱,把codex登录给退了,后面一直要官方登录,报400refresh token错误

手机号没有验证,auth文件refreshtoken字段为空是可以使用gpt codex的,具体看网上使用auth文件的教程,我遇到并解决的主要是refresh token报错。 Codex 使用 auth 文件报错的一次排查 发现问题主要是codex应用增强 非接管时保持官方登录 …

2026/7/30 3:53:31 阅读更多 →
STM32硬件SPI驱动3线LCD:从原理到DMA优化实践

STM32硬件SPI驱动3线LCD:从原理到DMA优化实践

1. 项目概述:为什么选择硬件SPI驱动3线LCD?在嵌入式显示项目中,驱动一块SPI接口的LCD屏是再常见不过的需求。很多开发者,尤其是刚接触STM32的朋友,可能会图省事直接用GPIO模拟SPI时序,也就是我们常说的“软…

2026/7/30 3:52:31 阅读更多 →

日新闻

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

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

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

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻