python裝飾器複習

2021-09-29 23:35:38 字數 1532 閱讀 5245

裝飾器是python中比較重要的乙個概念,要理解裝飾器,先理解下變數的作用域、閉包、閉包函式。

簡單用個閉包函式舉例

def func():

v_name = 'hello world'

def function():

print(v_name)

return function

func()

參考下面的執行結果,在func()函式中,建立乙個子函式function(),當呼叫func()的時候,retrun的fcuntion,這樣就會直接去呼叫子函式function,func中的變數v_name可直接被引用。注意此時return的時候function,並不是function()

裝飾器的應用場景:不改變執行函式,在函式外面再加入某些屬性,這樣就大大增加了函式的擴充套件性和維護性。比如我想統計每個方法執行下來需要的時間。常規做法就是在每天方法的開始和結尾加上時間函式來統計。但是如果用裝飾器,就簡單多了。只需要新增乙個方法如下:

def func(run):

starttime=time1

run() #執行函式

endtime=time2

return (time2-time1)

@func

def run():

******

import time

def dd(parameter):

def timer(func):

print ('time1 is 1',parameter)

func(*args)

print ('now time is 2')

return timer

@dd('bibi')

def test(value):

time.sleep(1)

print (value)

test('ggggg')

上面的執行等價於下面的

箭頭的順序大致就是程式執行的流程,還沒完全理解,所以部分知識點沒有說的很透徹。

Python之裝飾器複習

一 什麼是裝飾器?裝飾器他人的器具,本身可以是任意可呼叫物件,被裝飾者也可以是任意可呼叫物件。二 強調裝飾器的原則 1 不修改被裝飾物件的源 2 不修改被裝飾物件的呼叫方式 3 在遵循1和2的前提下,為被裝飾物件新增上新功能 三 裝飾器的使用 import time def timmer func ...

複習裝飾器

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...