裝飾器的作用:在不改變源**和呼叫方式的情況下,實現功能的新增
(一)基礎的裝飾器(僅實現為函式新增功能)
功能實現:
為原函式新增計算執行時間的功能
'''測試結果如下圖所示:高階函式+巢狀函式=>裝飾器
裝飾器的原則:
(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)
(name)
(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()
(home())
bbs()
歡迎各位大神測試,指正,謝謝!
python裝飾器介紹 Python之裝飾器簡介
python函式式程式設計之裝飾器 1.開放封閉原則 簡單來說,就是對擴充套件開放,對修改封閉。在物件導向的程式設計方式中,經常會定義各種函式。乙個函式的使用分為定義階段和使用階段,乙個函式定義完成以後,可能會在很多位置被呼叫。這意味著如果函式的定義階段 被修改,受到影響的地方就會有很多,此時很容易...
python 找到裝飾器 Python之裝飾器
裝飾器本質上就是乙個python函式,他可以讓其他函式在不需要做任何 變動的前提下,增加額外的功能,裝飾器的返回值也是乙個函式物件。裝飾器的作用 在不改變原函式及原函式的執行的情況下,為原函式增加一些額外的功能,比如列印日誌 執行時間,登入認證等等。乙個簡單的裝飾器 import time def ...
Python之裝飾器
裝飾器就是乙個以函式作為引數並返回乙個替換函式的可執行函式 即裝飾器是乙個函式,其引數為函式,返回值也為函式 可理解為對函式的功能進行拓展,所以叫裝飾 outer為裝飾器,效果為給被裝飾函式返回值結果加負號 defouter fun definner x return fun x return in...