def timefun_arg(pre='hello'):def timefunc(function):
def inner():
print('10086')
print(pre)
function()
return inner
return timefunc
@timefun_arg('100866666666')
def test():
print('i love u')
test()
# it`s so funny
def w1(func):mylist = [123,456]
def inner():
kk = input('請輸入帳號:')
yy = input('請輸入密碼:')
if int(kk) == mylist[0]:
if int(yy) == mylist[1]:
print('恭喜您有許可權')
func()
else:
print('密碼錯誤')
else:
print('帳號錯誤')
return inner
def w2(func):
def inner():
print('沒在驗證資訊')
func()
return inner
@w1def f1():
print('驗證完畢,f1---66666')
@w1def f2():
print('驗證完畢,f2---66666')
@w1# @w2#雖然先顯示的是w1的裝飾功能,其實先裝飾的是w2的功能 over f3=w1(f3=w2(f3)) f3()
def f3():
print('驗證完畢,f3---66666')
# a = [f1,f2,f3]
# for i in a:
# i()
f3()
# def func(functionname):# print('---1-----')
# def func_in(a,b):
# print('----2----')
# functionname(a,b)
# print('----3----')
# return func_in
# @func
# def test(a,b):
# print('---test----a= {}, b = {}'.format(a,b))
# test(11,22)
#引數需要在裡面所有被裝飾的相同函式名+括號的裡面新增相應的引數
#-------------------不定引數------*args,**kwargs-----元祖與字典形式
def func1(functionname):
print('---1-----')
def func_in1(*args,**kwargs):
print('----2----')
functionname(*args,**kwargs)
print('----3----')
return func_in1
@func1
def test1(a,b,c,d):
print('---test----a= {}, b = {},c = {}, d = {}'.format(a,b,c,d))
test1(11,22,33,44)
#--------如果被裝飾函式裡要return,不能有效,解決方式需在裡面kk = func(),再returnkk
複習 裝飾器
1 2 裝飾器的作用 3引入日誌 4函式執行時間的統計 5執行函式前預備處理 6執行函式後清理功能 7許可權校驗等場景8快取 9 1011 定義乙個函式,遵循閉包原則 函式作為引數 12def decorator func 13 定義乙個裝飾器函式 14 print func 函式開始 15def1...
python裝飾器複習
裝飾器是python中比較重要的乙個概念,要理解裝飾器,先理解下變數的作用域 閉包 閉包函式。簡單用個閉包函式舉例 def func v name hello world def function print v name return function func 參考下面的執行結果,在func 函...
複習基礎 裝飾器
def f print 2018 06 04 要求在每次呼叫f的時,列印 2018 06 04 前列印一句 開始 之後列印一句 結束 在這裡我們有兩種方法 1,直接更改原函式 簡單粗暴 野蠻人使用的方法 2,使用函式裝飾器 文明人使用的方法 1,什麼是裝飾器 是用來擴充套件被裝飾物件功能的方法,在不...