裝飾器原理

2022-08-24 04:54:08 字數 811 閱讀 5417

# 裝飾器,原理

# 開放封閉原則

def outer(func):

# func = 原來的f1函式

def inner(*args, **kwargs): # *args, **kwargs裝飾器就這麼寫,可以應對多個引數

print("ok1")

r = func(*args, **kwargs) # r等於none

print("ok2")

return r

return inner # 注意不能返回inner()

# @有特殊含義

# 執行outer後函式,並將下面的函式名作為引數。將outer的返回值重新賦值給f1,即執行f1就是執行inner

@outer

def f1(a1, a2):

print("ok")

return a1 + a2

a = f1(1, 3)

print(a)

# 只要函式應用裝飾器,那麼函式就被重新定義,重新定義為裝飾器的內層函式

def outer_1(func):

def inner(*args, **kwargs):

print(3.5)

r = func(*args, **kwargs)

return r

return inner

# 乙個函式可以擁有多個裝飾器

@outer

@outer_1

def f2(a, b, c):

print(a, b, c)

f2(1, 2, 3)

python裝飾器原理 Python裝飾器原理

裝飾器 decorator 是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯 的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下 decorator def core service 要理解上述 的含義,我們從自定義函式裝...

py py裝飾器原理

算是py語言的個特性功能吧.其他js還沒接觸到有沒有這個功能 主要亮點 在不修改現有函式的功能要求下,豐富現有函式功能.def f1 print f1 func deff2 print f2 func deff3 print f3 func deff4 print f4 func deff5 pri...

裝飾器原理分析

實驗一 usr local bin python3 deff name print name defh fun print fun.name defg print jack return fun return g return h f bob def fun1 print fun1 return f...