Python之裝飾器

2022-08-04 08:45:13 字數 2491 閱讀 9957

器即函式,

裝飾即修飾,意指為其他函式新增功能

裝飾器定義:本質就是函式,功能是為其他函式新增新功能

原則:裝飾器的基礎知識:

裝飾器 = 高階函式 + 函式巢狀 + 閉包

高階函式的定義:

函式接收的引數是乙個函式名

函式的返回值是乙個函式名

滿足上面條件任意乙個,都可以稱之為高階函式

1

import

time

2def

test(fun):

3 start_t =time.time()

4fun()

5 stop_t =time.time()

6print("

函式執行時間-->

",stop_t -start_t)78

deffoo():

9 time.sleep(2)

10print("

來自foo")

11test(foo)

12 函式執行時間--> 2.0003068447113037

13"""

14來自foo

15函式執行時間--> 2.0003068447113037

16"""

函式的引數是乙個函式名

1

import

time

2def

test(fun):

3 start_t =time.time()

4fun()

5 stop_t =time.time()

6print("

函式執行時間-->

",stop_t -start_t)

7return

fun8

9def

foo():

10 time.sleep(2)

11print("

來自foo")

1213 foo =test(foo)

14foo()

1516

"""17

來自foo

18函式執行時間--> 2.000347137451172

19"""

函式的返回值是乙個函式名

高階函式終結

1,函式接收的引數是乙個函式名

作用:在不修改函式源**的前提下,為函式增加新功能

不足:會改變函式的呼叫方式

2,函式的返回值是乙個函式名

作用:不修改函式的呼叫方式

不足:不能增添新功能

def

father(name):

print("

from father %s

"%name)

defson():

name = "

abc"

print("

from son")

defgrandson():

print("

from grandson %s

"%name)

grandson()

son()

father(

"123

")

在乙個作用域裡放入定義變數,相當於打了乙個包

import

time

deftest(fun):

start_t =time.time()

res = fun(*args, **kwargs)

stop_t =time.time()

print("

函式執行時間-->

",stop_t -start_t)

return

res

return

@test

#foo = test(foo)

deffoo(name,age):

time.sleep(2)

print("

來自foo")

return

"這是test的返回值%s,%s

"%(name,age)

print(foo("

abc",123))

a = 1b = 2

print

(a,b)

a,b =b,a

print

(a,b)

"""1 2

2 1"""

l = (1,2,3,4,5,6)

a,*b,c =l

print

(a,b,c)

"""1 [2, 3, 4, 5] 6

"""

滿足一一對應關係

python裝飾器介紹 Python之裝飾器簡介

python函式式程式設計之裝飾器 1.開放封閉原則 簡單來說,就是對擴充套件開放,對修改封閉。在物件導向的程式設計方式中,經常會定義各種函式。乙個函式的使用分為定義階段和使用階段,乙個函式定義完成以後,可能會在很多位置被呼叫。這意味著如果函式的定義階段 被修改,受到影響的地方就會有很多,此時很容易...

python 找到裝飾器 Python之裝飾器

裝飾器本質上就是乙個python函式,他可以讓其他函式在不需要做任何 變動的前提下,增加額外的功能,裝飾器的返回值也是乙個函式物件。裝飾器的作用 在不改變原函式及原函式的執行的情況下,為原函式增加一些額外的功能,比如列印日誌 執行時間,登入認證等等。乙個簡單的裝飾器 import time def ...

Python之裝飾器

裝飾器就是乙個以函式作為引數並返回乙個替換函式的可執行函式 即裝飾器是乙個函式,其引數為函式,返回值也為函式 可理解為對函式的功能進行拓展,所以叫裝飾 outer為裝飾器,效果為給被裝飾函式返回值結果加負號 defouter fun definner x return fun x return in...