什麼是裝飾器
把乙個函式當作引數,返回乙個替代版的函式,本質上就是乙個返回函式的函式例如下面的例子簡單來說就是"在不改變原函式的基礎上,給函式增加功能」
def func1():
print('hello python')
def outer():
print('~~~~~~~~~~~~~~')
func1()
outer()
如果我們使用裝飾器來實現上面的功能~
def func1():
print('hello python')
def outer(a):
def inner():
a()print('~~~~~~~~~~~~~~~')
return inner
func1 = outer(func1)
func1()
這個裝飾器的執行為,將func1函式傳給形參a,然後呼叫a,即func1,然後輸出~~~~~~~~~~~,所以輸出結果為
下面還有乙個例子來幫助大家理解一下裝飾器
port time
def decorator(func):
print(time.time())
func()
@decorator
def f1():
print('this is a function')
f1()
這裡的@decorator的意思是呼叫decorator函式,他下面的函式像當於原函式,而decorator函式相當於修飾元函式(新增功能的)函式
上面這樣寫,跟下面這樣寫一樣
import time
def decorator(func):
print(time.time())
func()
#@decorator
def f1():
print('this is a function')
f1 = decorator(f1)
f1()
這兩個函式其執行的過程為,首先將f1傳給形參func,然後執行decorator裡面的函式,具體為首先輸出時間,然後呼叫f1函式
當執行f1('test')的時候,步驟是這樣的func_name=test,func=f1('test')。,然後開始呼叫decorator函式,按照從上到下的執行順序,先是輸出時間,然後是this is function test
當執行f2的時候同理,輸出結果為
當執行f3的時候同理,輸出結果為
這應該不難理解了,其實就是把原函式當成引數帶入修飾函式執行~
ok~
python 裝飾器簡介
24 裝飾器 1 函式名 1自動執行outer函式並且將下面的函式名f1當做引數傳遞 2將outer函式的返回值,重新賦值給f1.def outer func def inner print before r func print after return r 有返回值時這麼處理。return in...
python中的裝飾器
其實去年就開始學python了,零零散散,陸陸續續學了點,期間學習了python web開發,爬蟲系統 但是一些基礎性的知識點長時間不看了就會忘,所以寫個部落格記錄下來,忘了可以隨時檢視,不用回去看 了,希望也能幫助大家學習哈。python中的裝飾器decorator其實是乙個高階函式,它接受乙個函...
Python 中的裝飾器
1.基本概念 問題 裝飾器是什麼?解答 嚴格來說,裝飾器只是語法糖,裝飾器是可呼叫的物件,可以像常規的可呼叫物件那樣呼叫,特殊的地方是裝飾器的引數是乙個函式 問題 裝飾器有什麼特性?解答 裝飾器有 個特性,一是可以把被裝飾的函式替換成其他函式,二是可以在載入模組時候立即執行 def decorate...