Python之裝飾器

2022-08-22 02:24:13 字數 1924 閱讀 2064

裝飾器的作用:在不改變源**和呼叫方式的情況下,實現功能的新增

(一)基礎的裝飾器(僅實現為函式新增功能)

功能實現:

為原函式新增計算執行時間的功能

'''

高階函式+巢狀函式=>裝飾器

裝飾器的原則:

(1)不能改變被裝飾函式的源**

(2)不能改變被裝飾函式的呼叫方式

'''import

time

deftimer(func):

def func_deco(*args,**kwargs):

start_time=time.time()

func(*args,**kwargs)

run_time=time.time()-start_time

print("

函式的執行時間為 %s

" %run_time)

return func_deco #

返回函式執行的記憶體位址

@timer

deffun_te(name,age):

time.sleep(1)

print

(name)

print

(age)

fun_te(

'lihanyu

',18)

測試結果如下圖所示:

(二)裝飾器高潮版

import

time

user,pwd=('

lihanyu

','110')

defout(auth_type):

defauth(func):

可以實現傳任意個數的引數

if auth_type=='

local':

username=input("

username:")

password=input("

password:")

if username==user and password==pwd:

print("

驗證成功")

res=func(*args,**kwargs)

return res #

返回所執行函式的返回值,此**中即為home()的返回值

else

:

print("

使用者名稱或密碼輸入錯誤")

elif auth_type=='

ldap':

print("

我不懂啊。。。。。")

else

:

print("

沒有此種登入方式")

return

return

auth

defindex():

print("

welcome to index")

@out(auth_type='

local')

defhome():

print('

welcome to home page')

return

"from home

"@out(auth_type='

ldap')

defbbs():

print("

welcome to bbs")

index()

print

(home())

bbs()

測試結果如下圖所示:

歡迎各位大神測試,指正,謝謝!

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

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

python 找到裝飾器 Python之裝飾器

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

Python之裝飾器

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