複習裝飾器

2022-05-25 01:57:11 字數 1885 閱讀 1281

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,什麼是裝飾器 是用來擴充套件被裝飾物件功能的方法,在不...