python 定义函数,包括参数传递、返回值

定义函数是编程中的基本技能之一,它允许我们将代码组织成可重用的块。Python 提供了简单而强大的方式来定义函数,并且支持多种参数传递方式和返回值处理。

定义函数

使用 def 关键字来定义一个函数。函数定义通常包括函数名、参数列表(可选)和函数体。以下是一个简单的例子:

def greet():    print("Hello, world!")调用这个函数很简单:greet()  # 输出: Hello, world!

参数传递

位置参数 (Positional Arguments)这是最常用的参数类型,参数按照它们在函数定义中的顺序传递给函数。

def greet(name):    print(f"Hello, {name}!")greet("Alice")  # 输出: Hello, Alice!

默认参数 (Default Arguments)

可以为参数指定默认值,如果调用时没有提供对应的参数,则使用默认值。

def greet(name="world"):    print(f"Hello, {name}!")greet()         # 输出: Hello, world!greet("Bob")    # 输出: Hello, Bob!

关键字参数 (Keyword Arguments)

您可以在调用函数时通过参数名来指定参数值,这样就不需要考虑参数的位置。

def greet(first_name, last_name):    print(f"Hello, {first_name} {last_name}!")greet(last_name="Smith", first_name="John")  # 输出: Hello, John Smith!

可变长度参数 (*args 和 **kwargs)

有时我们不知道需要传递多少个参数,或者想要传递一个字典或列表作为参数。这时可以使用 *args 和 **kwargs。

*args:收集所有额外的位置参数到一个元组中。

**kwargs:收集所有额外的关键字参数到一个字典中。

def greet_everyone(*names):    for name in names:        print(f"Hello, {name}!")greet_everyone("Alice", "Bob", "Charlie")def greet_with_details(**details):    for key, value in details.items():        print(f"{key}: {value}")greet_with_details(name="David", age=30)

返回值

函数可以通过 return 语句返回一个或多个值。如果没有显式地使用 return,则函数会隐式地返回 None。

def add(a, b):    return a + bresult = add(5, 3)print(result)  # 输出: 8

返回多个值

Python 函数可以返回多个值,这实际上是返回了一个元组,然后可以解包为多个变量。

def get_user_info():    return "Alice", 25, "Engineer"name, age, occupation = get_user_info()print(name, age, occupation)  # 输出: Alice 25 Engineer

示例:结合以上所有概念

下面是一个更复杂的例子,展示了如何将上述所有概念组合在一起:

def calculate_area(shape, *dimensions, **options):    """    根据形状计算面积,支持矩形和圆。    :param shape: 形状名称 ('rectangle' 或 'circle')    :param dimensions: 对于矩形,传入两个维度;对于圆,传入半径。    :param options: 其他选项,如是否打印结果。    :return: 计算出的面积    """    if shape == 'rectangle':        length, width = dimensions        area = length * width    elif shape == 'circle':        radius, = dimensions        area = math.pi * radius ** 2    else:        raise ValueError("Unsupported shape")    if options.get('print_result', False):        print(f"The area of the {shape} is {area:.2f}")    return area# 使用示例calculate_area('rectangle', 10, 5, print_result=True)calculate_area('circle', 7, print_result=True)
THE END