python中的裝飾器簡介

2021-09-10 15:41:11 字數 2301 閱讀 5802

什麼是裝飾器

把乙個函式當作引數,返回乙個替代版的函式,本質上就是乙個返回函式的函式

簡單來說就是"在不改變原函式的基礎上,給函式增加功能」

例如下面的例子

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