functools 是 Python 标准库中一个极为实用的模块,提供了许多用于处理函数、高阶函数以及函数式编程的工具。
1. functools.partial
用途: 创建一个新函数,它固定了原函数的部分参数。
示例:
from functools import partial
def power(base, exponent):
return base ** exponent
# 创建一个固定底数为2的新函数
square = partial(power, base=2)
# 调用新函数只需传递指数
print(square(3)) # 输出: 8
2. functools.update_wrapper / functools.wraps
用途: 在编写装饰器时,保持被装饰函数的元信息(如名称、文档字符串、注解等)不变。
示例:
from functools import wraps
def add_logging(func):
@wraps(func)
def wrapper(*args, **kwargs):
print(f"Calling {func.__name__} with arguments {args}, {kwargs}")
result = func(*args, **kwargs)
print(f"{func.__name__} returned: {result}")
return result
return wrapper
@add_logging
def