1. 程式人生 > >Python不歸路_裝飾器(一)

Python不歸路_裝飾器(一)

意思 地址 函數返回值 right 輸出結果 運用 logs pan ext

裝飾器

  裝飾器 什麽是裝飾器?給現有函數添加新功能的函數,不更改現有函數源代碼,現有函數調用方式。裝飾器是由高階函數和嵌套函數組成。

  概括上面這句話的意思:1、裝飾器 - - - > 函數 ;

             2、不更改現有函數源代碼

             3、不更改現有函數調用方式

             4、裝飾器對於函數來說是透明的(不產生任何影響)

  裝飾器運用的情景:在生產環境中,業務不能中斷時,要給某些大量調用函數填加新功能時。

  高階函數 怎麽樣的函數才是高階函數

  1.把函數名作為實參傳遞給另外一個函數

  2.返回值中包括函數

  下面我們來感受下高階函數是怎麽把函數名作為實參傳遞給另外一個函數的

def prt():
    print(this is prt!)
def func1(x):
    print(this is func1!)
    x()
func1(prt)

  輸出結果:

this is func1! #執行print(‘this is func1‘)語句
this is prt! #執行x(),在func1調用時,將函數prt作為參數傳入,所以x()=prt()。

  我們可以得出一個結論,函數即變量。

  返回值return

  在《初始函數(一)》中,我們已經知道函數可以返回任何值,包括函數,函數返回值可以采用賦值給變量的形式被捕獲。  

def prt():
    print(this is prt!)
def func1():
    print(this is func1!)
    return func1
func1(prt)

  輸出結果:

this is func1!
<function func1 at 0x000001EEDC1316A8> #返回值func1內存地址    return func1

 然後我們可以把返回值賦值給某一變量

prt=func1()

  嵌套函數

  在函數嵌套定義另一個函數,一定是在函數中定義的。

def func1():
     def func2():
        
print(‘this is func2’) return 1 return 1

  

-------不會開發的運維不是好廚師

Python不歸路_裝飾器(一)