前言
Python函数是可重用的代码块,通过def关键字定义,包含输入参数和可选的返回值。它们可以执行特定任务,提高代码的组织性和可读性。函数支持位置参数、默认参数、关键字参数和可变参数,还可以使用高阶函数、匿名函数(lambda)、递归和装饰器来实现复杂功能。
函数的定义与调用
Python 函数通过 def 关键字定义,基本语法如下:
def function_name(parameters):
"""
文档字符串:描述函数的作用、参数、返回值等。
"""
# 函数体
return result
- function_name: 函数名称,遵循命名规则(如小写字母、下划线等)。
- parameters: 参数列表,用于函数内部使用,多个参数用逗号分隔。如果没有参数,可以省略括号内内容。
- return: 返回语句,返回函数的结果。如果没有 return 语句,函数返回 None。
示例:
def add_numbers(a, b):
"""返回两个数的和。"""
return a + b
result = add_numbers(5, 3) # 调用函数
print(result) # 输出: 8
函数的参数类型
函数的参数可以是位置参数、默认参数、关键字参数和可变参数。
- 位置参数: 按照顺序传递给函数。
def greet(name, age): print(f"Hello, {name}. You are {age} years old.") greet("Alice", 30) # 输出: Hello, Alice. You are 30 years old.
- 默认参数: 提供默认值的参数,若调用时未传递,则使用默认值
def greet(name, age=18): print(f"Hello, {name}. You are {age} years old.") greet("Bob") # 输出: Hello, Bob. You are 18 years old.
- 关键字参数: 使用参数名进行传递,可以不按顺序传递。
greet(age=25, name="Charlie") # 输出: Hello, Charlie. You are 25 years old.
- 可变参数:
*args 允许传递任意数量的参数,作为元组处理。
**kwargs 允许传递任意数量的关键字参数,作为字典处理。def sum_numbers(*args): return sum(args) print(sum_numbers(1, 2, 3, 4)) # 输出: 10 def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Dave", age=22) # 输出: name: Dave, age: 22
高阶函数与匿名函数
-
高阶函数: 接受函数作为参数或返回一个函数的函数
def apply_function(func, value): return func(value) def square(x): return x * x print(apply_function(square, 5)) # 输出: 25
-
匿名函数(Lambda 表达式): 使用 lambda 关键字定义的简短函数。
square = lambda x: x * x print(square(5)) # 输出: 25 print(apply_function(lambda x: x + 10, 5)) # 输出: 15
函数的作用域与闭包
- 局部作用域与全局作用域: 函数内部定义的变量是局部变量,函数外部定义的变量是全局变量。
global_var = 10 # 全局变量 def modify_var(): local_var = 5 # 局部变量 return local_var + global_var print(modify_var()) # 输出: 15
- 闭包: 函数内定义的函数,可以捕获外部函数的变量,并在外部函数结束后继续使用。
def outer_function(text): def inner_function(): print(text) return inner_function closure = outer_function("Hello, World!") closure() # 输出: Hello, World!
函数的递归与装饰器
- 递归函数: 函数调用自身,用于解决分治问题。
def factorial(n): if n == 1: return 1 return n * factorial(n - 1) print(factorial(5)) # 输出: 120
- 装饰器: 函数的包装器,用于在不修改原函数的情况下扩展功能。
def decorator(func): def wrapper(*args, **kwargs): print("Before function execution") result = func(*args, **kwargs) print("After function execution") return result return wrapper @decorator def say_hello(): print("Hello!") say_hello()
总结
Python函数是通过 def 关键字定义的可重用代码块,用于执行特定任务。函数通过参数传递数据,可以返回结果,从而提高代码的模块化和可读性。Python支持多种参数类型,如位置参数、默认参数、关键字参数和可变参数,使得函数调用更灵活。高阶函数可以接收或返回函数,匿名函数(lambda)简化了短小的函数定义。递归函数用于解决分治问题,装饰器则为函数提供了不改变其内部实现的功能扩展。总体而言,Python函数在代码重用、结构化编程和功能扩展上具有重要作用。