一、什么是函数?为什么要用函数?

1.1 函数概念

函数(function)是组织好的、可重复使用的、用来实现单一或特定功能的代码块。

简单来说:把一段经常要用的代码打包起来,起个名字,以后想用直接调用即可,不用重复写代码。

1.2 使用函数的核心优势

代码复用:一次定义,多次调用,告别重复代码

简化代码结构:代码分层清晰,逻辑一目了然

便于维护:功能修改只需改函数内部,无需改所有调用处

降低冗余:大幅减少代码量,提升开发效率


二、函数的基本语法(核心)

2.1 完整定义格式

Python中使用def 关键字定义函数,固定语法如下:

def 函数名(参数列表):
    """函数文档注释(说明函数功能、参数、返回值)"""
    # 函数体:具体执行的代码逻辑
    return 返回值  # 可选,没有则默认返回 None

2.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))   # 15

4.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

六、新手常见易错点总结

  1. 定义函数忘记冒号:def语句末尾必须加 :,否则直接报错

  2. 缩进错误:函数体必须缩进,缩进混乱会导致程序异常

  3. 参数数量不匹配:位置参数调用时,传参数量必须和形参一致

  4. return后写代码:return会终止函数,后续代码永远不执行


七、全文总结

本文完整讲解了Python函数的核心概念、语法结构、四种函数类型、五大参数、返回值,覆盖新手入门、作业实操、面试基础全部考点。

函数是Python模块化编程的核心,是后续学习递归、高阶函数、装饰器、面向对象的基础,务必熟练掌握定义、调用、参数和返回值的核心用法。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐