一、函数的多返回值
1.1 如何返回多个值?
Python允许函数通过return
一次性返回多个值,返回的数据以元组形式组织。
示例代码:
def get_user_info():
name = "张三"
age = 25
return name, age # 返回元组("张三", 25)
# 接收返回值
user_name, user_age = get_user_info()
print(f"姓名:{
user_name},年龄:{
user_age}")
输出结果:
姓名:张三,年龄:25
1.2 注意事项
- 函数执行到第一个
return
就会结束,后续代码不会执行。 - 返回多个值时,接收变量需按顺序一一对应。
二、函数的多种传参方式
2.1 位置参数(Positional Arguments)
按参数定义顺序传递值,顺序和数量必须严格匹配。
示例代码:
def greet(name, message):
print(f"{
name}, {
message}")
greet("李四", "欢迎学习Python!") # 正确
greet("欢迎学习Python!", "李四") # 错误,顺序颠倒
2.2 关键字参数(Keyword Arguments)
通过键=值
形式传参,无需关注顺序,但需参数名正确。
示例代码:
def set_coordinates(x, y):
print(f"坐标:({
x}, {
y})")
set_coordinates(y=50, x=100) # 正确
set_coordinates(100, y=50) # 正确(混合位置参数)
set_coordinates(x=100, 50) # 错误(位置参数必须在关键字参数前)
2.3 缺省参数(Default Arguments)
为参数提供默认值,调用时可省略传参。
规则:缺省参数必须定义在非缺省参数之后。
示例代码:
def order_food(dish, count=1):
print(f"点了{
count}份{
dish}")
order_food("宫保鸡丁") # 输出:点了1份宫保鸡丁
order_food("鱼香肉丝", 3) # 输出:点了3份鱼香肉丝
2.4 不定长参数(Variable-Length Arguments)
用于处理不确定参数数量的场景,分为两种形式:
- 位置不定长参数(
*args
):接收所有位置参数,保存为元组。 - 关键字不定长参数(
**kwargs
):接收所有键值对,保存为字典。
示例代码:
def print_args(*args, **kwargs):
print("位置参数:", args) # 输出:(1, 2, 3)
print("关键字参数:", kwargs) # 输出:{'name': '王五', 'age': 30}
print_args(1, 2, 3, name="王五", age=30)
三、匿名函数(Lambda)
3.1 Lambda语法与使用场景
Lambda用于定义临时、一次性的简单函数,语法如下:
lambda 参数: 表达式
示例代码:
# 计算两数之和
add = lambda x, y: x + y
print(add(3, 5)) # 输出:8
# 结合函数参数使用
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # 输出:[1, 4, 9, 16]
3.2 注意事项
- Lambda函数体只能写一行代码。
- 复杂逻辑应使用
def
定义普通函数。
四、函数作为参数传递(高阶函数)
4.1 传递逻辑而非数据
函数可以作为参数传递给另一个函数,实现逻辑的灵活组合。
示例代码:
def compute(x, y, func):
return func(x, y)
# 定义加法函数
def add(a, b):
return a + b
# 传递add函数
result = compute(10, 20, add)
print(result) # 输出:30
# 使用Lambda简化
result = compute(10, 20, lambda a, b: a * b)
print(result) # 输出:200
4.2 应用场景
- 排序时自定义比较规则(如
sorted(list, key=lambda)
)。 - 数据处理时动态指定计算逻辑。
五、总结与练习
5.1 重点回顾
- 多返回值:用逗号分隔多个值,按顺序接收。
- 参数传递:
- 位置参数需严格匹配顺序。
- 关键字参数提高可读性。
- 缺省参数需定义在末尾。
- 不定长参数处理动态参数数量。
- Lambda:临时匿名函数,简化代码。
- 高阶函数:函数作为参数传递,增强灵活性。
5.2 练习题目
- 编写函数,返回两个数的最大值和最小值。
- 使用Lambda实现一个函数,判断数字是否为偶数。
- 定义一个高阶函数,对列表中的每个元素应用指定操作(如平方、加倍)。
参考代码:
# 练习1
def max_min(a, b):
return max(a, b), min(a, b)
# 练习2
is_even = lambda x: x % 2 == 0
# 练习3
def apply_operation(lst, func):
return [func(x) for x in lst]
numbers = [1, 2, 3]
print(apply_operation(numbers, lambda x: x * 2)) # 输出:[2, 4, 6]