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