函数参数与返回值

函数的参数与返回值是函数最重要的两个部分,它们负责函数的输入输出。通过参数,我们可以将数据传递给函数;通过返回值,函数可以将计算结果反馈回来。


1. 什么是函数的参数?

函数的参数就像函数的“入口”,通过它,外部可以向函数内部传递数据。

基本用法

定义函数时,可以在括号内指定参数,调用函数时,按需传入值。

def greet(name):  # name 是参数
    print(f"你好,{name}!")

greet("小明")  # "小明" 是实际传入的值

输出

你好,小明!

2. 参数的类型

Python 中的函数支持以下几种参数类型。

位置参数

参数按位置传递,调用时必须传入每一个参数。

def add(a, b):  # a 和 b 是位置参数
    return a + b

result = add(3, 5)
print(f"3 + 5 = {result}")

输出

3 + 5 = 8

默认参数

在定义函数时可以为参数指定默认值。如果调用时没有传递该参数,就会使用默认值。

def greet(name="朋友"):  # 设置默认参数
    print(f"你好,{name}!")

greet()          # 使用默认值
greet("小红")    # 覆盖默认值

输出

你好,朋友!
你好,小红!

关键字参数

调用函数时,可以通过指定参数名来传递值,而不是按顺序。这种方式叫关键字参数。

def introduce(name, age):
    print(f"我是{name},今年{age}岁。")

introduce(age=25, name="小王")  # 参数顺序可以不一致

输出

我是小王,今年25岁。

可变参数

*args**kwargs 定义可变参数:

  • *args:接受任意数量的位置参数,函数内部会将它们作为一个元组处理。
  • **kwargs:接受任意数量的关键字参数,函数内部会将它们作为一个字典处理。
def show_args(*args, **kwargs):
    print("位置参数:", args)
    print("关键字参数:", kwargs)

show_args(1, 2, 3, name="小明", age=18)

输出

位置参数: (1, 2, 3)
关键字参数: {'name': '小明', 'age': 18}

3. 什么是函数的返回值?

返回值是函数的“出口”,表示函数的输出。通过 return 语句,函数可以将计算结果返回给调用者。

单个返回值

def add(a, b):
    return a + b

result = add(4, 6)
print(f"4 + 6 = {result}")

输出

4 + 6 = 10

多个返回值

函数可以同时返回多个值,调用时可以用元组或多个变量接收。

def calculate(a, b):
    return a + b, a - b

sum_result, diff_result = calculate(10, 4)
print(f"和:{sum_result}, 差:{diff_result}")

输出

和:14, 差:6

4. 参数与返回值的结合

函数的参数与返回值常常结合使用,使函数更具灵活性。

示例:计算圆的面积和周长

import math

def circle_properties(radius):
    if radius < 0:
        return "半径不能为负数!"
    area = math.pi * radius ** 2
    circumference = 2 * math.pi * radius
    return area, circumference

# 用户输入半径
radius = float(input("请输入圆的半径:"))
result = circle_properties(radius)

# 判断返回结果并输出
if isinstance(result, str):
    print(result)  # 错误信息
else:
    area, circumference = result
    print(f"圆的面积:{area:.2f}, 周长:{circumference:.2f}")

5. 常见问题与注意事项

  1. 参数顺序:位置参数必须在默认参数之前,关键字参数必须在可变参数之后。

    def example(a, b=10, *args, **kwargs):
        pass
    
  2. 返回值:函数如果没有 return,默认返回 None。可以通过 return None 明确表示没有返回值。

  3. 可变对象作为默认值:避免使用可变对象(如列表或字典)作为默认参数,容易引发意想不到的问题。

    def append_value(val, lst=[]):
        lst.append(val)
        return lst
    
    print(append_value(1))  # [1]
    print(append_value(2))  # [1, 2],共享同一个默认列表!
    

    解决方法:将默认值设为 None,在函数内部初始化。

    def append_value(val, lst=None):
        if lst is None:
            lst = []
        lst.append(val)
        return lst
    

6. 总结

  • 参数:用于向函数传递输入,有位置参数、默认参数、关键字参数和可变参数等类型。
  • 返回值:用于将函数结果反馈给调用方,支持返回单个值和多个值。

掌握函数的参数与返回值,可以让你的代码更加灵活、清晰、高效!