news 2026/4/16 12:39:21

Python全栈入门到实战【基础篇 15】函数基础:内置函数调用 + 自定义函数(定义/参数/返回值)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python全栈入门到实战【基础篇 15】函数基础:内置函数调用 + 自定义函数(定义/参数/返回值)

哈喽各位小伙伴!前面咱们吃透了循环、条件判断、复合数据类型,能写出处理单一任务的代码——但实际开发中常会遇到这样的问题:

  • 验证手机号格式的逻辑,在“用户注册”和“数据清洗”场景都需用到,重复编写不仅冗余,修改时还需同步更新多处;
  • 计算成绩等级的规则调整后,所有涉及该逻辑的代码都要逐一修改;
  • 代码规模扩大后,循环与判断语句交织,排查问题时需逐行检索,维护成本极高。

这些问题的核心,是缺少“代码封装复用”的能力——而Python的函数(Function)正是解决该问题的核心方案。函数能将“完成特定功能的代码段”封装为可调用模块,使用时仅需一行代码调用,无需重复编写逻辑,如同将常用工具收纳于工具箱,取用便捷且结构清晰。

本节将系统讲解函数的核心用法,覆盖内置函数与自定义函数的全场景应用:

  • 内置函数:Python自带的基础工具集(len()/range()/enumerate()等);
  • 自定义函数:封装专属业务逻辑(定义语法、参数设计、返回值处理);
  • 函数参数:位置参数、关键字参数、默认参数、可变参数(覆盖绝大多数开发场景);
  • 核心特性:作用域规则、返回值机制、函数调用流程;
  • 常见问题:参数传递错误、返回值遗漏、作用域混淆等问题的解决方案。

掌握函数的使用,能让代码从“零散执行”升级为“模块化复用”,大幅提升代码的简洁性与可维护性。

文章目录

  • 一、前置引入:为什么需要函数?
  • 二、基础中的基础:内置函数(Python自带的“工具集”)
    • 1. 基础操作类(高频使用)
      • 示例:基于内置函数的简单交互
    • 2. 序列操作类(处理列表/字符串常用)
      • 示例:基于内置函数的成绩分析
    • 3. 类型转换类(解决类型不匹配问题)
      • 示例:解决类型不匹配问题
    • 4. 内置函数调用规则
  • 三、核心重点:自定义函数(封装专属逻辑)
    • 1. 自定义函数的定义语法
      • 各部分说明
      • 完整示例:成绩等级判断函数
    • 2. 函数的核心要素:参数(输入数据)
      • (1)位置参数(基础类型)
        • 示例:两数求和函数
      • (2)关键字参数(增强可读性)
        • 示例:用户信息打印函数
      • (3)默认参数(可选输入)
        • 示例:带默认值的成绩等级判断
      • (4)可变参数(灵活接收多参数)
        • 示例1:`*args`实现任意个数求和
        • 示例2:`**kwargs`实现任意用户信息打印
    • 3. 函数的核心要素:返回值(输出结果)
      • (1)无返回值(默认返回None)
        • 示例:无返回值函数
      • (2)返回单个值
        • 示例:计算圆的面积
      • (3)返回多个值
        • 示例:计算矩形的周长与面积
      • (4)`return`终止函数执行
    • 4. 函数的调用
      • 完整流程示例:手机号验证函数
  • 四、函数的核心特性:作用域(变量生效范围)
    • 1. 局部作用域(函数内部)
        • 示例:局部变量的作用域
    • 2. 全局作用域(函数外部)
      • (1)读取全局变量
      • (2)修改全局变量(需`global`声明)
      • 注意:避免局部变量与全局变量同名
  • 五、常见问题与解决方案
    • 1. 参数数量/类型不匹配
        • 错误示例与修正
    • 2. 遗漏返回值
        • 错误示例与修正
    • 3. 修改全局变量未声明`global`
    • 4. 默认参数使用可变类型
        • 错误示例与修正
    • 5. 函数名重复
  • 六、实战案例:用户信息管理工具(函数版)
  • 七、总结
  • 八、专栏订阅

一、前置引入:为什么需要函数?

没有函数的编程模式,如同使用散装零件完成任务——每次实现特定功能都需重新组合代码片段;而函数则是将零件组装成的标准化工具,一次封装即可反复使用。

用一个生活例子帮你理解:你经常需要 “切水果”,如果没有工具,每次都要找刀、洗刀、切水果、洗刀,步骤重复又麻烦;但你买了一个 “切水果机”(函数),以后要切水果时,只需把水果(参数)放进去,按一下开关(调用函数),机器就会自动完成切水果的步骤,最后给你切好的水果(返回值)。

函数的核心价值体现在三个维度:

  1. 代码复用:相同逻辑仅需编写一次,通过函数调用在多场景复用,避免重复编码(如手机号验证逻辑封装后,注册、数据清洗场景可直接调用);
  2. 模块化开发:将复杂任务拆解为多个单一功能的函数(如用户管理系统拆分为“添加/查询/删除”函数),代码结构清晰,便于分工协作与问题定位;
  3. 易维护性:逻辑修改仅需更新函数内部实现,所有调用处自动生效(如调整成绩等级判定规则时,仅需修改get_score_level()函数)。

通过以下对比可直观感受函数的优势:

# 无函数:重复编写成绩等级判断逻辑(冗余且维护成本高)score1=
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:59:11

Fastboot必须要用USB2.0的数据线!

总结:去搞一根只有 USB 2.0 功能的旧数据线,你的所有驱动烦恼、连接烦恼都会烟消云散。

作者头像 李华
网站建设 2026/4/9 1:16:15

STM32H743Z+TF卡实战:4位SDMMC高速存储指南

目录 一、核心概念先理清(初学者必看,避免术语混淆) 1. SDMMC 是什么? 2. TF 卡与 SDMMC 的匹配性 3. SDMMC 的两种数据线模式(初学者优先 4 位) 4. 关键前提:TF 卡的最小读写单位 二、ST…

作者头像 李华
网站建设 2026/4/15 13:57:49

Java:强类型转换

在 Java 中,将 null 值进行强类型转换为 String 类型时,需要注意以下几点: 1. ‌强制类型转换 (String) null‌ 当尝试将 null 值强制转换为 String 类型时,代码是合法的,不会抛出异常。例如: Object obj …

作者头像 李华
网站建设 2026/4/10 8:19:47

【2026年版|建议收藏】RAG检索增强生成详解:从传统搜索到LightRAG开源实现(小白/程序员入门必备)

本文首先拆解传统搜索基于倒排索引的底层机制,帮大家理解传统搜索的局限性;随后详解RAG技术的核心逻辑——如何通过Embedding模型将文本转化为高维语义向量,利用向量距离衡量语义相似度,结合主流向量数据库实现精准知识检索&#…

作者头像 李华
网站建设 2026/4/14 7:42:08

<span class=“js_title_inner“>交通运输部综合交通运输大模型智能体创新应用典型案例(第一批)解读 iTSTech 2026</span>

2025 年 12 月发布的《综合交通运输大模型智能体创新应用典型案例(第一批)》,是我国交通运输领域数字化转型的重要成果展示。该文档通过 104 个典型案例,构建了覆盖 “技术创新 - 运营服务 - 安全监管 - 政务管理” 的全链条智能应…

作者头像 李华