Python裝飾器
什麼是裝飾器
Python中的裝飾器本質上就是在不改變函數本身的情況下包裝一個函數成為另一個函數的語法糖
裝飾器簡單示例
def wrapper(func):nn def inner(*args, **kwargs):n print(func.__name__, *args, **kwargs)n return func(*args, **kwargs)nn return innernn@wrapperndef print_func(words):n return wordsnnprint_func(Hello decorator!)n
裝飾器有什麼用?
看起來好像很不錯,那麼裝飾器有什麼用呢?
在我看來本質上就是減少代碼重複(Dont repeat yourself),讓代碼的可讀性更好!
需要緩存的地方使用示例
def get_article_detail(uid):n article = ORM.get_article(uid)nn if article:n cache.incr(key)nn return articlen
`這樣在訪問文章的時候,每次都要在函數內累加瀏覽量,如果換成裝飾方式呢?`
def increase_page_view(func):nn def wrapper(*args, **kwargs):n obj = func(*args, **kwargs)nn if obj:n cache.incr(obj.id)nn return objnn return wrappernnn@increase_page_viewndef get_article_detail(uid):n return ORM.get_article(uid)n
這樣原來的獲取文章詳情的函數,只關心獲取文章,而累加瀏覽量的操作放到具體的裝飾器函數中,提高代碼的可讀性
推薦閱讀: