Python3 裝飾器

2022-11-24 14:41:26 字數 4351 閱讀 5661

1>定義: 本質是函式,功能是用來裝飾其他函式,為其他函式新增附加功能

2>原則:(1)不能修改被裝飾函式的源**;(2);不能修改唄裝飾的函式的呼叫方式

實現裝飾器知識儲備:(1)函式即變數(2)高階函式(滿足其一就是:一個函式作為另一個函式的入參;返回值包含函式名(3)巢狀函式

高階函式 + 巢狀函式 = 修飾器?1

2345

6789

1011

1213

1415

1617

importtime

deftimer(func):

defdeco(*args,**kwargs):

start_time=time.time()

returnfunc(*args,**kwargs)

end_time=time.time()

print('the run time is %s'%(end_time-start_time))

returndeco

# test1 = timer(test1)

@timer

deftest1(times):

time.sleep(times)

print('in the test1')

returntimes

print(test1(1))

輸出結果:?1

2inthe test1

1?1

2345

6789

1011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

36#模擬某些函式需要登陸驗證,驗證方式分為本地和ldap驗證

username,password="bert","abc123"#假設是資料庫使用者名稱密碼

defauth(auth_type):

def

def*args,**kwargs):

ifauth_type=='local':

user_name=input('username:').strip()

pass_word=input('password:').strip()

ifuser_name==usernameandpass_word==password:

print("使用者名稱密碼驗證成功!")

returnfunc(*args,**kwargs)

else:

print("使用者名稱密碼驗證失敗!")

elifauth_type=='ldap':

print('ldap方式驗證登入。。。')

returnfunc(*args,**kwargs)

return

return

defindex():

print('in the index')

return'index'

@auth(auth_type="local")#auth_type裝飾器最外層函式的入參

defhome():

print('in the home')

return'home'

@auth(auth_type="ldap")

defbbs():

print('in the bbs')

return'bbs'

index()

home()

bbs()

python3 裝飾器

如果想在程式中加入惡意 裝飾器是不錯的選擇 匹配 字元名稱網頁 的函式 route r a z html def char file name,url none print 收到了 名稱為字元 的網頁 print 接收的檔名為 file name print 匹配的正則url表示式為 url pri...

python3

list學習 1.中括號表示 裡面可以是任意資料型別元組,列表 li 1,2,4,990,2.9,sssss sss aaa 1,2 索引取值 print li 3 2.切片從1至3 從1至倒數第三個 print li 1 3 print li 1 3 3.迴圈取值 for l in li prin...

Python3

python 是一個高層次的結合瞭解釋性 編譯性 互動性和麵向物件的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。reddit 社交分享 dropbox 檔案分享服務 豆瓣網 圖書 唱片 電影等文化產品的資...