← 返回首页
🐍

函数定义与调用

📂 python ⏱ 2 min 266 words

什么是函数

函数是一段具有特定功能的可重用代码块。通过函数,你可以将复杂的逻辑分解成小的、易于管理的部分,提高代码的可读性和可维护性。

# 定义一个简单的函数
def greet(name):
    return f"你好,{name}!"

# 调用函数
message = greet("张三")
print(message)  # 输出: 你好,张三!

函数的基本语法

Python函数使用def关键字定义,后面跟着函数名和参数列表。

# 无参数函数
def say_hello():
    print("Hello!")

# 有参数函数
def add(a, b):
    return a + b

# 多行函数
def calculate_average(numbers):
    if not numbers:
        return 0
    total = sum(numbers)
    count = len(numbers)
    return total / count

# 调用函数
say_hello()
result = add(3, 5)
avg = calculate_average([1, 2, 3, 4, 5])

参数类型

Python支持多种参数类型,包括位置参数、关键字参数、默认参数和可变参数。

# 位置参数
def power(base, exponent):
    return base ** exponent

# 关键字参数
result = power(base=2, exponent=3)

# 默认参数
def greet(name, greeting="你好"):
    return f"{greeting},{name}!"

# 可变参数(*args)
def calculate_sum(*numbers):
    return sum(numbers)

# 关键字可变参数(**kwargs)
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# 调用示例
print(greet("李四"))  # 使用默认问候语
print(greet("李四", greeting="早上好"))  # 自定义问候语
print(calculate_sum(1, 2, 3, 4, 5))  # 输出: 15
print_info(name="王五", age=25, city="北京")

返回值

函数可以通过return语句返回一个或多个值。

# 返回单个值
def square(n):
    return n * n

# 返回多个值(实际上是返回元组)
def get_min_max(numbers):
    return min(numbers), max(numbers)

# 使用返回值
result = square(5)
minimum, maximum = get_min_max([3, 1, 4, 1, 5, 9, 2, 6])

print(f"平方: {result}")  # 输出: 平方: 25
print(f"最小值: {minimum}, 最大值: {maximum}")

作用域

变量的作用域决定了变量在代码中的可见性和生命周期。

# 全局变量
global_var = "我是全局变量"

def outer_function():
    # 外部函数的局部变量
    outer_var = "我是外部函数的变量"

    def inner_function():
        # 内部函数可以访问外部函数的变量
        inner_var = "我是内部函数的变量"
        print(global_var)  # 可以访问全局变量
        print(outer_var)   # 可以访问外部函数的变量
        print(inner_var)   # 可以访问自己的变量

    inner_function()
    # print(inner_var)  # 错误!无法访问内部函数的变量

outer_function()

闭包

闭包是一种特殊的函数,它记住并访问定义时的环境变量。

def create_multiplier(factor):
    def multiplier(number):
        return number * factor
    return multiplier

# 创建闭包
double = create_multiplier(2)
triple = create_multiplier(3)

# 使用闭包
print(double(5))   # 输出: 10
print(triple(5))   # 输出: 15

# 闭包记住factor的值
print(double(10))  # 输出: 20
print(triple(10))  # 输出: 30

函数作为参数

函数可以作为参数传递给其他函数,这在回调函数和高阶函数中很常见。

def apply_operation(func, a, b):
    return func(a, b)

def add(x, y):
    return x + y

def multiply(x, y):
    return x * y

# 传递函数作为参数
result1 = apply_operation(add, 3, 5)
result2 = apply_operation(multiply, 3, 5)

print(f"加法: {result1}")  # 输出: 加法: 8
print(f"乘法: {result2}")  # 输出: 乘法: 15

最佳实践

函数是Python编程的核心构建块,掌握函数的使用能让你写出更加模块化和可维护的代码。