Python案例如何实现函数返回值?

wen python案例 13

本文目录导读:

Python案例如何实现函数返回值?

  1. 基础返回值
  2. 返回多个值(元组)
  3. 返回列表
  4. 返回字典
  5. 返回None(无返回值)
  6. 条件返回
  7. 返回自定义对象
  8. 实际应用案例
  9. 高级用法:生成器(yield)

我来详细介绍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}")
  1. 返回值类型:可以返回任何Python对象
  2. 多个返回值:通过元组实现,自动打包和解包
  3. None返回值:函数默认返回None,用于表示无返回值
  4. 错误处理:可以考虑返回元组 (value, error) 来进行错误处理
  5. 返回值使用:函数的返回值可以赋值、直接使用或作为其他函数的参数

这些案例涵盖了Python函数返回值的主要用法,你可以根据实际需求选择合适的方式。

抱歉,评论功能暂时关闭!