1. 函数基础概念
1.1 什么是函数
-
定义:函数是一段可重复调用的代码块,用于封装特定功能。
-
核心作用:
- 代码重用:减少重复代码的编写。
- 增强可读性:通过命名和模块化让代码逻辑更清晰。
1.2 函数的定义与调用
def 函数名(参数):
"""函数文档字符串(可选)"""
函数体代码
return 返回值 # 可选
# 示例
def greet(name):
"""向用户打招呼"""
print(f"Hello, {name}!")
greet("Alice") # 输出:Hello, Alice!
1.3 函数的应用场景
-
场景1:重复代码封装
def send_alert(email): # 发送邮件的10行代码 pass if cpu_usage > 90: send_alert("admin@example.com")
-
场景2:复杂逻辑分块
def check_straight(cards): """判断是否为顺子""" pass def check_flush(cards): """判断是否为同花""" pass
2. 函数参数详解
2.1 位置参数与关键字参数
-
位置传参:按参数定义顺序传递值。
def add(a, b): return a + b add(3, 5) # 输出:8
-
关键字传参:通过参数名指定值,顺序可调。
add(a=3, b=5) # 输出:8 add(b=5, a=3) # 输出:8
2.2 默认参数
-
定义时指定默认值,调用时可省略。
def power(base, exponent=2): return base ** exponent power(3) # 输出:9(使用默认指数2) power(3, 3) # 输出:27
2.3 动态参数
-
*args:接收任意数量的位置参数,存储为元组。
def sum_all(*args): return sum(args) sum_all(1, 2, 3) # 输出:6
-
**kwargs:接收任意数量的关键字参数,存储为字典。
def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=25)
2.4 参数传递的注意事项
-
混合使用顺序:位置参数 → 默认参数 → *args → **kwargs。
-
不可变与可变对象:
- 不可变对象(如整数、字符串)在函数内修改时会创建新对象。
- 可变对象(如列表、字典)在函数内修改会直接影响原对象。
3. 函数返回值
3.1 返回值的基本使用
def is_even(num):
return num % 2 == 0
print(is_even(4)) # 输出:True
3.2 返回值的类型与特性
-
多返回值:自动打包为元组。
def min_max(nums): return min(nums), max(nums) result = min_max([3, 1, 4]) # (1, 4)
-
无返回值:默认返回 None。
3.3 利用返回值控制流程
def find_user(users, target):
for user in users:
if user == target:
return True # 找到后立即终止函数
return False