Python函数进阶:多返回值、参数传递与匿名函数详解
本文基于PPT文档内容,系统讲解Python函数进阶的核心知识点,包括多返回值、多种参数传递方式以及匿名函数的使用。
一、函数多返回值
1.1 多返回值的基本概念
在Python中,函数可以返回多个值,这是通过返回元组(tuple)实现的。
python
def test_return():
return 1, 2
x, y = test_return()
print(x) # 结果:1
print(y) # 结果:2
关键要点:
-
按照返回值的顺序,用对应顺序的多个变量接收
-
变量之间用逗号隔开
-
支持返回不同类型的数据
1.2 注意事项
如果函数中有多个return语句,只会执行第一个遇到的return,因为return会退出当前函数:
python
def return_num():
return 1 # 只会执行这个return
return 2 # 这行不会执行
result = return_num()
print(result) # 输出:1
二、函数多种传参方式
位置参数,关键字参数
位置参数,默认参数
Python函数支持4种常见的参数使用方式:
2.1 位置参数
根据函数定义的参数位置来传递参数:
python
def user_info(name, age, gender):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
user_info('TOM', 20, '男') # 必须按顺序传递
注意:传递的参数和定义的参数的顺序及个数必须一致。
2.2 关键字参数
通过"键=值"形式传递参数,更加清晰易用:
python
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
# 关键字传参(顺序无关)
user_info(name="小明", age=20, gender="男")
user_info(age=20, gender="男", name="小明")
# 可以和位置参数混用
user_info("小明", age=20, gender="男")
混用的话,位置参数必须在关键字参数的左侧
关键规则:
-
位置参数必须在关键字参数前面
-
关键字参数之间不存在先后顺序
2.3 缺省参数(默认参数)

为参数提供默认值,调用时可省略:
python
def user_info(name, age, gender='男'):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
user_info('TOM', 20) # 使用默认性别'男'
user_info('Rose', 18, '女') # 修改默认值
重要规则:所有位置参数必须出现在默认参数前。
2.4 不定长参数

用于不确定参数个数的场景,分为两种类型:
位置传递(*args)

python
def user_info(*args):
print(args)
user_info('TOM') # 输出:('TOM',)
user_info('TOM', 20) # 输出:('TOM', 20)
-
所有参数被args变量收集为元组
-
根据参数位置合并为元组
关键字传递(**kwargs)

python
def user_info(**kwargs):
print(kwargs)
user_info(name='TOM', age=20) # 输出:{'name': 'TOM', 'age': 20}
-
所有"键=值"参数被kwargs接受为字典
-
根据键值对组成字典
三、函数作为参数传递
3.1 函数作为参数的概念
函数本身也可以作为参数传入另一个函数中,实现计算逻辑的传递:
python
def test_func(compute):
result = compute(1, 2)
print(result)
def compute(x, y):
return x + y
test_func(compute) # 输出:3
3.2 实际应用场景
这种方式可以实现不同的计算逻辑:
python
# 加法逻辑
def compute_add(x, y):
return x + y
# 乘法逻辑
def compute_multiply(x, y):
return x * y
# 减法逻辑
def compute_subtract(x, y):
return x - y
# 使用相同的test_func函数,传入不同的计算逻辑
test_func(compute_add) # 输出:3
test_func(compute_multiply) # 输出:2
test_func(compute_subtract) # 输出:-1
核心优势:传递的是计算逻辑,而不是具体数据,提高了代码的灵活性。
四、lambda匿名函数

4.1 匿名函数的基本语法
lambda关键字用于定义匿名函数(无名称函数):
lambda 传入参数: 函数体(一行代码)
4.2 与def函数的对比
使用def定义有名函数:
python
def test_func(compute):
result = compute(1, 2)
print(result)
def hanshu_func (cpmpute):
print(cpmpute(10,20))
hanshu_func(lambda x,y: 2*x - 3*y)
