最后活跃于 9 months ago

functools 模組提供多種函式工具,如記憶化(lru_cache)、部分應用(partial)和函式包裝(wraps),適用於提升效能、簡化回呼函式與裝飾器開發。

fibonacci_cache.py 原始文件
1import functools
2
3@functools.lru_cache(maxsize=5)
4def fibonacci(n):
5 """計算費氏數列(具備快取功能)"""
6 if n < 2:
7 return n
8 return fibonacci(n - 1) + fibonacci(n - 2)
9
10print(fibonacci(10)) # 快速計算
11print(fibonacci.cache_info()) # 顯示快取統計
12
my_decorator_example.py 原始文件
1import functools
2
3def my_decorator(func):
4 @functools.wraps(func)
5 def wrapper(*args, **kwargs):
6 print(f"執行 {func.__name__} 函式")
7 return func(*args, **kwargs)
8 return wrapper
9
10@my_decorator
11def hello():
12 """這是一個測試函式"""
13 print("Hello, world!")
14
15hello()
16print(hello.__name__) # 保持原函式名稱
17print(hello.__doc__) # 保持原函式說明
18
power_partial.py 原始文件
1import functools
2
3def power(base, exponent):
4 return base ** exponent
5
6square = functools.partial(power, exponent=2) # 固定 `exponent=2`
7cube = functools.partial(power, exponent=3) # 固定 `exponent=3`
8
9print(square(5)) # 25
10print(cube(4)) # 64
11