Naposledy aktivní 9 months ago

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

timmy revidoval tento gist 9 months ago. Přejít na revizi

3 files changed, 38 insertions

fibonacci_cache.py(vytvořil soubor)

@@ -0,0 +1,11 @@
1 + import functools
2 +
3 + @functools.lru_cache(maxsize=5)
4 + def fibonacci(n):
5 + """計算費氏數列(具備快取功能)"""
6 + if n < 2:
7 + return n
8 + return fibonacci(n - 1) + fibonacci(n - 2)
9 +
10 + print(fibonacci(10)) # 快速計算
11 + print(fibonacci.cache_info()) # 顯示快取統計

my_decorator_example.py(vytvořil soubor)

@@ -0,0 +1,17 @@
1 + import functools
2 +
3 + def 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
11 + def hello():
12 + """這是一個測試函式"""
13 + print("Hello, world!")
14 +
15 + hello()
16 + print(hello.__name__) # 保持原函式名稱
17 + print(hello.__doc__) # 保持原函式說明

power_partial.py(vytvořil soubor)

@@ -0,0 +1,10 @@
1 + import functools
2 +
3 + def power(base, exponent):
4 + return base ** exponent
5 +
6 + square = functools.partial(power, exponent=2) # 固定 `exponent=2`
7 + cube = functools.partial(power, exponent=3) # 固定 `exponent=3`
8 +
9 + print(square(5)) # 25
10 + print(cube(4)) # 64
Novější Starší