裝飾器的本質是乙個python函式,它的作用是在不對原函式做任何修改的同時,給函式新增一定的功能。裝飾器的返回值也是乙個函式物件。
裝飾器def inner():
'''執行函式之前要做的
'''print('葫蘆娃葫蘆娃,一根藤上七個娃。')
ret = f()
'''執行函式之後要做的
'''print('風吹雨打都不怕,啦啦啦啦~')
return
ret
return
inner
#語法糖
deffunc(*args,**kwargs):
print("")
func()
#func() = inner() 呼叫裝飾器
計算結果:
deftimer(func):
def inner(*args,**kwargs):
print("
大頭兒子小頭爸爸,一對好朋友快樂父子倆。")
ret = func(*args,**kwargs)
print("
兒子的頭大手兒很小,爸爸的頭小手兒很大。")
return
ret
return
inner
@timer
deffunc(name):
print("
%s是隔壁王叔叔
"%name)
func(
"王文勁")
計算結果:
大頭兒子小頭爸爸,一對好朋友快樂父子倆。
王文勁是隔壁王叔叔
兒子的頭大手兒很小,爸爸的頭小手兒很大。
原則:開放封閉原則1、開放:對拓展是開放的,可以新增新功能(裝飾器)
2、封閉:對修改是封閉的,不能輕易修改以前的**
應用:使用者登入檢測
運用——登入檢測:user,pw='
jaye
','88888888
'login_status =false
deflogin():
if login_status ==false:
if auth_type =="
jingdong
"username =input()
password =input()
if user == username and pw ==password:
print('
welcome to moubao store')
home()
login_status =true
elif auth_type =="
weixin
"...
else
:
pass
@login(auth_type = '
jingodng')
defhome():
print('
welcome to home page')
@login(auth_type = '
weixin')
deffinance():
print('
welcome to home page')
@login(auth_type = '
jingodng')
defbook():
print('
welcome to home page
')
python之裝飾器 函式
1.裝飾器 遵循的原則 開閉原則 對功能的擴充套件開放 對 的修改是封閉 通用裝飾器寫法 存在的意義 在不破壞原有函式和原有函式呼叫的基礎上,給函式新增新的功能.fn是目標函式 def inner args,kwargs 為了目標函式的傳參 在執行目標函式之前 ret fn args,kwargs ...
Python學習 函式裝飾器
裝飾器 定義 本質是函式,裝飾其它函式,就是為其它函式新增附件功能。不能修改被裝飾函式的源 不能修改被裝飾函式的呼叫方式。高階函式 函式巢狀 import time deftime func def args,kwargs start time.time func end time.time pri...
Python基礎學習 函式裝飾器
裝飾器是python中非常實用的函式表達法,盡頭我們不講裝飾器原理,只講怎麼應用。裝飾器原理涉及物件導向以及函式本身也可以作為乙個引數被傳遞,原理比較簡單,但由於迴圈巢狀初學者難以理解。既然難以理解,那就先學會怎麼用,有了經驗,理解起來就相對容易了。首先我們要明白,裝飾器內函式是先於被裝飾函式執行的...