iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Python

30天自學Python系列 第 29

裝飾器應用與實作

  • 分享至 

  • xImage
  •  

今天是鐵人賽的第二十九天,今天我深入了解裝飾器的應用,裝飾器可以在不修改原始函式代碼的情況下,擴展其功能,使程式碼更加整潔和可重用。

-1計算函式執行時間的裝飾器:了解一個函式執行的效率。
舉例:
import time

def time_it(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"函式 '{func.name}' 執行時間: {end_time - start_time:.4f} 秒")
return result
return wrapper

@time_it
def slow_function():
# Indent the lines within the function body
time.sleep(2)
print("這是個慢函式")

slow_function()

-2計算函式被調用的次數的裝飾器:追蹤某個函式被執行的頻率。
舉例:
def count_calls(func):
def wrapper(*args, **kwargs):
wrapper.call_count += 1
print(f"函式 '{func.name}' 被調用 {wrapper.call_count} 次")
return func(*args, **kwargs)
wrapper.call_count = 0 # This line was incorrectly indented
return wrapper

@count_calls
def my_function():
print("這是我的函式")

my_function()
my_function()

-3限制函式執行次數的裝飾器:限制函式被調用的次數。
舉例:
def limit_calls(limit):
def decorator(func):
def wrapper(*args, **kwargs):
if wrapper.call_count < limit:
wrapper.call_count += 1
return func(*args, **kwargs)
else:
print(f"函式 '{func.name}' 已達到調用限制")
wrapper.call_count = 0
return wrapper
return decorator

@limit_calls(3)
def limited_function():
print("這是限制調用次數的函式")

limited_function()
limited_function()
limited_function()
limited_function()


上一篇
裝飾器(Decorators)
下一篇
回顧與未來展望
系列文
30天自學Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言