Python decorator攔截器代碼實例解析
這個decorator是什么意思呢?
很簡單,它接受一個log的參數(shù),即傳入logger對象。然后它會先把函數(shù)名打印出來,接下來,會利用enumerate函數(shù),將args、kwargs的任意參數(shù)給展開,并按順序輸出。最后,它再將func以這些參數(shù)包裝回去,繼續(xù)進行函數(shù)的執(zhí)行和結(jié)果返回。
例1 最簡單
def get_text(name):
return "hello, {0}".format(name)
def p_decorate(func):
def func_wrapper(name):
return "<p>{0}</p>".format(func(name))
return func_wrapper
my_get_text = p_decorate(get_text)
print(my_get_text("zhangsan"))
例2 參數(shù)通用化
def p_decorate(func):
def func_wrapper(*args, **kwargs):
return "<p>{0}</p>".format(func(*args, **kwargs))
return func_wrapper
class Person(object):
def __init__(self):
self.name = "Neng"
self.family = "Xiong"
@p_decorate
def get_fullname(self):
return self.name+" "+self.family
my_person = Person()
print(my_person.get_fullname())
例3 根據(jù)參數(shù),實現(xiàn)動態(tài)攔截器
def tags(tag_name):
def tags_decorator(func):
def func_wrapper(*args, **kargs):
return "<{0}>{1}</{0}>".format(tag_name, func(*args, **kargs))
return func_wrapper
return tags_decorator
@tags("div")
@tags("p")
@tags("strong")
def get_text(name):
return "hello, "+name
print(get_text("zhangsan"))
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)一個函數(shù)版的名片管理系統(tǒng)過程解析
這篇文章主要介紹了python實現(xiàn)一個函數(shù)版的名片管理系統(tǒng)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
判斷python對象是否可調(diào)用的三種方式及其區(qū)別詳解
今天小編就為大家分享一篇判斷python對象是否可調(diào)用的三種方式及其區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
詳解Python中的函數(shù)參數(shù)傳遞方法*args與**kwargs
本文將討論Python的函數(shù)參數(shù)。我們將了解args和kwargs,/和的都是什么,雖然這個問題是一個基本的python問題,但是在我們寫代碼時會經(jīng)常遇到,比如timm中就大量使用了這樣的參數(shù)傳遞方式2023-03-03
Python小整數(shù)對象池和字符串intern實例解析
這篇文章主要介紹了Python小整數(shù)對象池和字符串intern實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03

