一、什么是函数?为什么要用函数?
1.1 函数概念
函数(function)是组织好的、可重复使用的、用来实现单一或特定功能的代码块。
简单来说:把一段经常要用的代码打包起来,起个名字,以后想用直接调用即可,不用重复写代码。
1.2 使用函数的核心优势
代码复用:一次定义,多次调用,告别重复代码
简化代码结构:代码分层清晰,逻辑一目了然
便于维护:功能修改只需改函数内部,无需改所有调用处
降低冗余:大幅减少代码量,提升开发效率
二、函数的基本语法(核心)
2.1 完整定义格式
Python中使用def关键字定义函数,固定语法如下:
def 函数名(参数列表): """函数文档注释(说明函数功能、参数、返回值)""" # 函数体:具体执行的代码逻辑 return 返回值 # 可选,没有则默认返回 None2.2 语法拆解说明
def:定义函数的固定关键字,必须写
函数名:遵循Python命名规范,建议使用蛇形命名,见名知意(如 add_num、get_info)
参数列表:可选,用于接收外部传入的数据,无参数则括号为空
文档注释:三引号包裹,用于描述函数功能,提升代码可读性,推荐必写
函数体:缩进代码块,实现函数核心逻辑
return:可选,用于返回函数执行结果,终止函数运行
三、函数的四种基础类型(带实战代码)
根据参数和返回值,函数分为四类,覆盖所有基础场景:
3.1 无参数、无返回值函数
仅执行固定逻辑,无需传参、无需返回结果,多用于打印提示、固定操作。
# 定义无参无返回值函数 def show_menu(): """打印系统功能菜单""" print("=====学生管理系统=====") print("1. 添加学生 2. 查询学生") print("3. 统计数据 4. 退出系统") # 调用函数:函数名() show_menu()3.2 无参数、有返回值函数
无需外部传参,函数内部处理数据后返回结果。
def get_system_time(): """返回固定提示文本""" return "当前系统运行正常,可正常操作" # 接收返回值并打印 res = get_system_time() print(res)3.3 有参数、无返回值函数
接收外部传入数据,根据参数执行逻辑,无需返回结果。
def print_user_info(name, age): """根据传入参数打印用户信息""" print(f"姓名:{name},年龄:{age}") # 调用函数,传入实参 print_user_info("张三", 19) print_user_info("李四", 20)3.4 有参数、有返回值函数(最常用)
接收外部参数,处理数据后返回运算结果,开发中使用频率最高。
def calc_sum(a, b): """计算两个数字的和并返回结果""" res = a + b return res # 调用并接收结果 result = calc_sum(10, 20) print("两数之和:", result) # 输出:30四、函数五大参数类型(零基础吃透)
参数是函数的核心难点,Python函数参数分为:位置参数、关键字参数、默认参数、可变位置参数、可变关键字参数。
4.1 位置参数(必传参数)
调用函数时,实参顺序、数量必须和形参一致,一一对应赋值。
def student_info(name, age, sex): print(f"姓名:{name},年龄:{age},性别:{sex}") # 位置传参:顺序严格对应 student_info("小明", 18, "男")4.2 关键字参数
调用时通过形参名=值传参,无需固定顺序,可读性更高。
def student_info(name, age, sex): print(f"姓名:{name},年龄:{age},性别:{sex}") # 关键字传参,顺序任意 student_info(age=19, name="小红", sex="女")4.3 默认参数
定义函数时给参数设置默认值,调用时若不传该参数,自动使用默认值。
# sex参数默认值为“保密” def student_info(name, age, sex="保密"): print(f"姓名:{name},年龄:{age},性别:{sex}") # 不传sex,使用默认值 student_info("小李", 20) # 传参则覆盖默认值 student_info("小王", 18, "男")4.4 可变位置参数 *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(1,2,3,4,5)) # 154.5 可变关键字参数 **kwargs
接收任意多个关键字参数,自动打包为字典,常用于接收不确定的拓展参数。
def get_user(**kwargs): """接收任意用户拓展信息""" print(kwargs) get_user(name="小张", age=18, city="北京") # 输出:{'name': '小张', 'age': 18, 'city': '北京'}五、函数返回值详解(return)
5.1 return两大核心作用
返回数据:将函数运算结果返回给调用处
终止函数:执行到return,函数立即结束,后续代码不执行
5.2 返回多个值
Python函数支持一次性返回多个值,默认打包为元组。
def calc_num(a, b): """返回两数的和、差、积""" sum_res = a + b sub_res = a - b mul_res = a * b return sum_res, sub_res, mul_res # 解包接收多个返回值 s, su, m = calc_num(10, 5) print("和:", s, "差:", su, "积:", m)5.3 无return默认返回None
函数不写return,默认返回空值None。
六、新手常见易错点总结
定义函数忘记冒号:def语句末尾必须加:,否则直接报错
缩进错误:函数体必须缩进,缩进混乱会导致程序异常
参数数量不匹配:位置参数调用时,传参数量必须和形参一致
return后写代码:return会终止函数,后续代码永远不执行
七、全文总结
本文完整讲解了Python函数的核心概念、语法结构、四种函数类型、五大参数、返回值,覆盖新手入门、作业实操、面试基础全部考点。
函数是Python模块化编程的核心,是后续学习递归、高阶函数、装饰器、面向对象的基础,务必熟练掌握定义、调用、参数和返回值的核心用法。