裝飾器:修飾乙個:原來定義的乙個函式,但是這個函式的功能不夠完美,
需要提公升此函式(不改變原函式的內容,名稱。。)
此時就可以考慮使用:裝飾器
'''
完善購票功能:登入驗證
'''islogin = false
# 定義裝飾器
def login_required(func):
global islogin
if islogin:
func(*args, **kwargs)
else:
while true:
username = input('輸入使用者名稱:')
password = input('輸入密碼:')
# 驗證使用者名稱和密碼
if username == 'admin' and password == '123456':
print('使用者登入成功!')
# 修改登入狀態
islogin = true
func(*args, **kwargs)
break
else:
print('使用者名稱或者密碼有誤重新輸入...')
@login_required
def show_movie(name):
print('正在檢視「{}」電影的訂票情況'.format(name))
@login_required
def select_seat():
print('正在檢視電影院的座位....')
# 呼叫函式
select_seat()
show_movie('終結者')
def f0(func):
print('-------->1')
result = func(*args, **kwargs)
print('------->2')
return result + 2
@f0def f1(n):
print('------>f1f1f1')
n += 10
return n
print(result)
'''
多層裝飾器
''' print('-------->第乙個裝飾器start')
result = func(*args, **kwargs)
print('-------->第乙個裝飾器end')
return result
def f1(func): # func=f2
print('-------->第二個裝飾器start')
result = func(*args, **kwargs)
print('-------->第二個裝飾器end')
return result
def f2(n):
print('*****===>', n)
f2(6)
# 定義裝飾器函式
def zhuangxiu(area):
def decorator(func):
func()
print('刷漆')
print('鋪地板')
print('買家具')
# 每平800
total = area*800
print('裝修共花費:{},終於可以住.....'.format(total))
return decorator
@zhuangxiu(85)
def house():
print('空的毛坯房...')
# print(house.__name__)
house()
函式裝飾器 類裝飾器
一 函式裝飾函式 defwrapfun func definner a,b print function name func.name r func a,b return r return inner wrapfun defmyadd a,b return a b print myadd 2,3 二...
python裝飾器 函式裝飾器,類裝飾器
只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...
python 裝飾器 函式裝飾器 類裝飾器
python函式裝飾器和類裝飾器筆記.usr bin env python coding utf 8 author ivan file decorators.py version from functools import wraps 裝飾器 目的是為了給函式新增附加功能 1.不帶引數裝飾器 此方式...