什么是python的裝飾器?
網絡上的定義:
裝飾器就是一函數,用來包裝函數的函數,用來修飾原函數,將其重新賦值給原來的標識符,并永久的喪失原函數的引用。
最能說明裝飾器的例子如下:
python中提供了一個@符號的語法糖,用來簡化上面的代碼,他們的作用一樣
這2段的代碼是一樣的,等價的。
內置的3個裝飾器,他們分別是staticmethod,classmethod,property,他們的作用是分別把類中定義的方法變成靜態方法,類方法和屬性,如下:
裝飾器的嵌套:
就一個規律:嵌套的順序和代碼的順序是相反的。
也是來看一個例子:
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello world"
print hello()
返回的結果是:
<b><i>hello world</i></b>
為什么是這個結果呢?
1.首先hello函數經過makeitalic 函數的裝飾,變成了這個結果<i>hello world</i>
2.然后再經過makebold函數的裝飾,變成了<b><i>hello world</i></b>,這個理解起來很簡單。
新聞熱點
疑難解答
圖片精選