本文目录导读:

我来详细介绍Python函数返回值的多种实现方式和案例。
基础返回值
# 返回单个值
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出: 8
# 返回字符串
def greet(name):
return f"你好, {name}!"
print(greet("小明")) # 输出: 你好, 小明!
返回多个值(元组)
# 返回多个值(实际上返回元组)
def get_user_info():
name = "张三"
age = 25
city = "北京"
return name, age, city
# 解包接收
name, age, city = get_user_info()
print(f"姓名: {name}, 年龄: {age}, 城市: {city}")
# 输出: 姓名: 张三, 年龄: 25, 城市: 北京
# 也可以用单个变量接收元组
info = get_user_info()
print(info) # 输出: ('张三', 25, '北京')
print(type(info)) # 输出: <class 'tuple'>
返回列表
def get_even_numbers(n):
"""返回1到n之间的所有偶数"""
return [i for i in range(1, n+1) if i % 2 == 0]
# 使用
numbers = get_even_numbers(10)
print(numbers) # 输出: [2, 4, 6, 8, 10]
# 列表操作
numbers.append(12)
print(numbers) # 输出: [2, 4, 6, 8, 10, 12]
返回字典
def create_student(name, age, scores):
"""创建学生信息字典"""
return {
"name": name,
"age": age,
"scores": scores,
"average": sum(scores) / len(scores) if scores else 0
}
# 使用
student = create_student("李四", 18, [85, 92, 78])
print(student)
# 输出: {'name': '李四', 'age': 18, 'scores': [85, 92, 78], 'average': 85.0}
# 访问字典值
print(f"学生姓名: {student['name']}")
print(f"平均分: {student['average']:.1f}")
返回None(无返回值)
# 无return语句
def print_info(name):
print(f"姓名: {name}")
result = print_info("王五")
print(result) # 输出: None
print(type(result)) # 输出: <class 'NoneType'>
# 显示返回None
def validate_age(age):
if age < 0 or age > 150:
return None
return age
age = validate_age(-5)
if age is None:
print("年龄不合法!")
条件返回
def calculate(operation, a, b):
"""根据运算符计算结果"""
if operation == "add":
return a + b
elif operation == "subtract":
return a - b
elif operation == "multiply":
return a * b
elif operation == "divide":
if b == 0:
return "错误:除数不能为0"
return a / b
else:
return "错误:不支持的运算符"
# 测试
print(calculate("add", 10, 5)) # 输出: 15
print(calculate("divide", 10, 0)) # 输出: 错误:除数不能为0
print(calculate("power", 2, 3)) # 输出: 错误:不支持的运算符
返回自定义对象
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def __str__(self):
return f"矩形(宽={self.width}, 高={self.height})"
def create_rectangle(w, h):
"""创建并返回矩形对象"""
if w <= 0 or h <= 0:
return None
return Rectangle(w, h)
# 使用
rect = create_rectangle(5, 3)
if rect:
print(f"创建了{rect}, 面积: {rect.area()}") # 输出: 创建了矩形(宽=5, 高=3), 面积: 15
rect2 = create_rectangle(-1, 3)
print(rect2) # 输出: None
实际应用案例
案例1:计算器程序
def calculator():
"""完整计算器功能"""
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return None, "除数不能为0"
return a / b, None
# 返回所有函数
return {
"+": add,
"-": subtract,
"*": multiply,
"/": divide
}
# 使用
ops = calculator()
x, y = 10, 5
# 加法
result = ops["+"](x, y)
print(f"{x} + {y} = {result}") # 输出: 10 + 5 = 15
# 除法(错误处理)
result, error = ops["/"](10, 0)
if error:
print(f"错误: {error}") # 输出: 错误: 除数不能为0
案例2:数据分析函数
def analyze_scores(scores):
"""分析成绩数据"""
if not scores:
return {
"valid": False,
"message": "没有数据"
}
return {
"valid": True,
"count": len(scores),
"sum": sum(scores),
"average": sum(scores) / len(scores),
"max": max(scores),
"min": min(scores),
"passed": len([s for s in scores if s >= 60]),
"failed": len([s for s in scores if s < 60])
}
# 测试
scores = [85, 92, 58, 76, 45, 90, 88, 62]
analysis = analyze_scores(scores)
print("成绩分析结果:")
print(f"总人数: {analysis['count']}")
print(f"平均分: {analysis['average']:.1f}")
print(f"最高分: {analysis['max']}")
print(f"最低分: {analysis['min']}")
print(f"及格人数: {analysis['passed']}")
print(f"不及格人数: {analysis['failed']}")
# 检查空数据
empty_analysis = analyze_scores([])
print(f"\n空数据检查: {empty_analysis}")
高级用法:生成器(yield)
def fibonacci_generator(n):
"""生成斐波那契数列"""
a, b = 0, 1
count = 0
while count < n:
yield a
a, b = b, a + b
count += 1
# 使用生成器
for num in fibonacci_generator(10):
print(num, end=" ")
# 输出: 0 1 1 2 3 5 8 13 21 34
# 转换为列表
fib_list = list(fibonacci_generator(10))
print(f"\n列表: {fib_list}")
- 返回值类型:可以返回任何Python对象
- 多个返回值:通过元组实现,自动打包和解包
- None返回值:函数默认返回None,用于表示无返回值
- 错误处理:可以考虑返回元组
(value, error)来进行错误处理 - 返回值使用:函数的返回值可以赋值、直接使用或作为其他函数的参数
这些案例涵盖了Python函数返回值的主要用法,你可以根据实际需求选择合适的方式。