news 2026/5/1 4:41:49

【Python新手村】函数全攻略:从基础语法到匿名函数、递归的深度进阶!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python新手村】函数全攻略:从基础语法到匿名函数、递归的深度进阶!

Python 函数入门:拒绝重复劳动,把代码变成“乐高积木”!

你好,未来的架构师!👋

在前面的学习中,你可能已经写了不少代码。但你有没有发现:如果你想在代码的不同地方执行相同的功能,你可能需要把同一段代码复制粘贴好几次。这种做法不仅累,而且容易出错。

今天我们要学习的函数(Function),就是专门为了实现“一次编写,到处运行”而生的。

一、 核心概念:函数是一个“黑盒”

从严谨的角度来看,函数可以被看作一个黑盒(Black Box)

  1. 输入(Input):你丢进盒子的原料(参数)。

  2. 处理(Process):盒子内部的加工逻辑。

  3. 输出(Output):加工完吐出来的成品(返回值)。

💡 个人理解:你不需要关心盒子内部是怎么转动的,你只需要知道:丢进什么,能得到什么。这种“封装”思想是现代软件工程的基石。

二、 函数的语法结构

在 Python 中,定义函数使用def关键字(define 的缩写)。

def 函数名(参数1, 参数2): """这里是函数的文档字符串(功能说明)""" # 这里是函数的逻辑代码 结果 = 参数1 + 参数2 return 结果

必须注意的严谨细节:

  • 冒号 (:):千万别漏掉,它代表代码块的开始。

  • 缩进:函数体内的所有代码必须保持一致的缩进。

  • 文档字符串:虽然不是强制的,但写清楚函数是干嘛的,是专业程序员的标志。

三、 实战演练:写一个自己的函数

def say_hello(name, time_of_day): """根据时间段向用户打招呼""" message = f"早上好, {name}!" if time_of_day == "morning" else f"你好, {name}!" return message # 调用函数 result = say_hello("小明", "morning") print(result) # 输出: 早上好, 小明!

四、 参数的奥秘:形参与实参

  • 形参(Formal Parameter):定义函数时写的变量名(占位符)。

  • 实参(Actual Parameter):调用函数时真正传入的值(真数据)。

💡 个人理解:你可以把参数想象成插座和插头。定义函数是装插座,调用函数是插插头。规格(参数顺序和类型)必须匹配。

五、 返回值:成果汇报

return决定了函数运行结束后给调用者留下什么。没有return的函数会默认返回None

六、 作用域:谁能看到这个变量?

  • 局部变量(Local):在函数内部定义,外面看不见。

  • 全局变量(Global):在函数外面定义,全村人都能看见。

七、 进阶:匿名函数 Lambda(代码界的“一次性餐具”)

有时候,我们需要一个极其简单的函数,它只用一次,甚至懒得给它起名字。这时候,lambda就派上用场了。

语法:lambda 参数: 表达式

# 普通函数写法 def add(x, y): return x + y # Lambda 写法 add_lambda = lambda x, y: x + y print(add_lambda(5, 3)) # 输出: 8

💡 个人理解:Lambda 就像是一次性纸杯。如果你只是口渴想喝口水,没必要买一套精致的陶瓷茶具(def定义)。但要注意:如果逻辑超过一行,请务必用正常的def强行用 Lambda 写复杂逻辑会导致代码难以维护。

八、 进阶:递归(逻辑界的“盗梦空间”)

递归是一个函数在内部调用自己。它听起来很玄学,但其实逻辑非常严谨。

递归的两个“生死准则”:

  1. 基准情况(Base Case):必须有一个明确的停止条件,否则会陷入死循环。

  2. 递归步骤(Recursive Step):不断向基准情况靠拢。

经典案例:阶乘计算(5! = 54321)

def factorial(n): # 1. 基准情况:如果 n 是 1,就不用再往下拆了 if n == 1: return 1 # 2. 递归步骤:n! 等于 n 乘以 (n-1)! return n * factorial(n - 1) print(factorial(5)) # 输出: 120

💡 个人理解:递归就像是《盗梦空间》。你进入了一层梦境,在梦里又入梦。每入一层,问题就变小一点,直到触及潜意识边缘(基准情况),然后一层层“醒来”,把结果带回现实。警告:Python 对递归深度有限制。如果嵌套太深,会报RecursionError

九、 总结:高质量编写函数的心得

  1. 单一职责:一个函数只做一件事。

  2. 见名知意:用动词命名。get_user_name优于name_func

  3. 副作用最小化:尽量不要修改函数外部的全局变量。

  4. 该简则简,该繁则繁:简单的逻辑用 Lambda,复杂的嵌套用递归,重复的业务用普通函数。

结语:掌握了函数、Lambda 和递归,你已经从代码的“搬运工”进化成了“架构师”。现在,去用这些“乐高积木”搭建你的程序大厦吧!

觉得这篇深度攻略有用?点个赞收藏一下,让你的函数写得像诗一样优雅!(。♥‿♥。)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 5:36:12

MBA必看!10个降AI率工具测评榜单

MBA必看!10个降AI率工具测评榜单 为什么你需要一份靠谱的降AI率工具榜单 随着AIGC检测技术的不断升级,单纯依靠替换词汇或调整句式已经无法满足论文、报告等文本的降AI需求。对于MBA学生和职场人士而言,如何高效、安全地降低AI生成内容的识别…

作者头像 李华
网站建设 2026/4/25 12:16:46

出厂前一次性授权

完成「第一次系统确认」后,就能让后续所有「无障碍开关」「录屏弹窗」终身不再人工点第二次——核心就是「出厂前一次性授权」三件套: ADB 授予 WRITE_SECURE_SETTINGSADB 授予 PROJECT_MEDIA(录屏无弹窗)把 App 拉进电池白名单 …

作者头像 李华
网站建设 2026/4/23 8:13:29

AWS为Nutanix AHV虚拟化平台新增混合云存储支持

亚马逊云科技为Nutanix送上了一份圣诞大礼:在混合云存储设备中支持其AHV虚拟化平台。AWS热衷于推动对其服务的需求,其中一个重要工具就是存储网关(Storage Gateway),该工具可以将虚拟化平台连接到其简单存储服务&#…

作者头像 李华
网站建设 2026/4/18 8:27:35

探秘PandaWiki:AI驱动的开源知识库搭建新势力

摘要:在当今数字化时代,知识的高效管理与共享至关重要。PandaWiki作为一款AI驱动的开源知识库搭建系统,凭借其强大的AI能力、丰富的功能特色以及便捷的安装使用方式,为用户提供了快速构建智能化知识库的绝佳方案。本文将深入剖析P…

作者头像 李华
网站建设 2026/4/26 9:06:18

【紧急避坑】:Open-AutoGLM部署前必须验证的5项核心性能参数

第一章:Open-AutoGLM 性能验证的必要性在大语言模型(LLM)快速发展的背景下,Open-AutoGLM 作为一款开源的自动化生成语言模型系统,其实际性能直接影响到下游任务的准确性和效率。未经验证的模型可能在推理延迟、资源消耗…

作者头像 李华
网站建设 2026/4/12 2:49:19

Open-AutoGLM PC性能实测:在低配PC上也能流畅运行的AI编码黑科技

第一章:Open-AutoGLM PC性能实测:低配环境下的AI编码新范式 在资源受限的PC环境中运行大型语言模型曾被视为不可能的任务。然而,Open-AutoGLM 的推出打破了这一认知边界。该模型通过量化压缩、动态推理调度与轻量级上下文缓存机制&#xff0c…

作者头像 李华