複習基礎 裝飾器

2022-09-09 03:18:09 字數 1425 閱讀 4375

def

f():

print('

2018-06-04)

#要求在每次呼叫f的時,列印『2018-06-04』前列印一句『開始』,之後列印一句『結束』

在這裡我們有兩種方法:

1,直接更改原函式**:簡單粗暴(野蠻人使用的方法)

2,使用函式裝飾器(文明人使用的方法)

1,什麼是裝飾器:

是用來擴充套件被裝飾物件功能的方法,在不改變原物件的**前提下。

解決的方法:

第一步:定義乙個裝飾器

def   inner ():

print (『開始』)

ret=func ()

print    ('結束『)

return   ret

return    inner

第二步:為被裝飾物件加上裝飾器

def  f ():

print ('2018-06-04')

在呼叫f函式時會首先去執行裝飾器**。

二,當遇到兩個裝飾器或多個裝飾器時的執行順序:

例:def makebold(fun):

print('----a----')

def inner():

print('----1----')

return '' + fun() + ''

return inner

def makeitalic(fun):

print('----b----')

def inner():

print('----2----')

return '' + fun() + ''

return inner

@makebold

@makeitalic

def test():

print('----c----')

print('----3----')

return 'hello python decorator'

ret = test()

print(ret)

輸出結果為:

----b----

----a----

----1----

----2----

----c----

----3----

hello python decorator

在呼叫test函式的時候,根據上述分析,此時test指向makebold.inner函式,因此會先列印『1『,接下來,在呼叫fun()的時候,其實是呼叫的makeitalic.inner()函式,所以列印『2『,在makeitalic.inner中,呼叫的fun其實才是我們最原聲的test函式,所以列印原test函式中的『c『,『3『,所以在一層層調完之後,列印的結果為hello python decorator

複習裝飾器

def timefun arg pre hello def timefunc function def inner print 10086 print pre function return inner return timefunc timefun arg 100866666666 def tes...

複習 裝飾器

1 2 裝飾器的作用 3引入日誌 4函式執行時間的統計 5執行函式前預備處理 6執行函式後清理功能 7許可權校驗等場景8快取 9 1011 定義乙個函式,遵循閉包原則 函式作為引數 12def decorator func 13 定義乙個裝飾器函式 14 print func 函式開始 15def1...

python裝飾器複習

裝飾器是python中比較重要的乙個概念,要理解裝飾器,先理解下變數的作用域 閉包 閉包函式。簡單用個閉包函式舉例 def func v name hello world def function print v name return function func 參考下面的執行結果,在func 函...