python裝飾器利用了函數(shù)閉包和函數(shù)可以當(dāng)做參數(shù)進行傳遞的特性,函數(shù)閉包指在一個函數(shù)中嵌套一個函數(shù),同時外層函數(shù)返回內(nèi)層函數(shù)
目前成都創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、通城網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
user = {
"is_login": False
}
def edit_user():
print('用戶名修改成功')
def add_article():
print('添加文章成功')
def login_required(func):
def wrapper():
if user['is_login'] == True:
func()
else:
print('跳轉(zhuǎn)到登錄頁面')
return wrapper
login_required(edit_user)()
login_required(add_article)()
#利用語法糖可以簡化調(diào)用
user = {
"is_login": False
}
def login_required(func):
def wrapper():
if user['is_login'] == True:
func()
else:
print('跳轉(zhuǎn)到登錄頁面')
return wrapper
@login_required
def edit_user():
print('用戶名修改成功')
@login_required
def add_article():
print('添加文章成功')
#調(diào)用時,由于@語法糖的作用,被裝飾函數(shù)自動將自己的函數(shù)名作為參數(shù)傳給裝飾器函數(shù)
edit_user()
add_article()