乙個裝飾器的簡單應用小例子

2022-07-22 00:42:17 字數 1390 閱讀 7835

#

登陸驗證:如果沒喲登陸,則提示登陸

message =

deflogin(f):

def inner(*args, **kwargs):

'''被裝飾函式執行之前的操作'''

if message["

status"]:

ret = f(*args, **kwargs)

return

ret

else

: name = input("

輸入帳戶")

password = input("

輸入密碼")

with open(

"info.txt

", mode="

r", encoding="

utf-8

") as f1:

for line in

f1: user, pwd = line.split("|"

)

print("

-----

", user, pwd,type(user),type(pwd))

if name == user.strip() and password ==pwd.strip():

message[

"name

"] =name

message[

"status

"] =true

print("

跳轉中。。。")

ret = f(*args, **kwargs)

return

ret

else

:

print("

登陸失敗")

return

inner

@login

defarticl():

print("

訪問文章頁面")

@login

defneirong():

print("

訪問內容也頁面")

@login

defzhuye():

print("

訪問個人主頁頁面")

zhuye()

neirong()

articl()

結果顯示:

輸入帳戶xumou

輸入密碼123

----- xumou 123 'str

'> 'str

'>跳轉中。。。

訪問個人主頁頁面

訪問內容也頁面

訪問文章頁面

實現乙個簡單的裝飾器

下面示例定義了乙個裝飾器,它會在每次呼叫被裝飾的函式時計時,然後把經過的時間 傳入的引數和呼叫的結果列印出來。import time defclock func def clocked args t0 time.perf counter result func args elapsed time.p...

小技巧 裝飾器裝飾乙個遞迴函式

在python中裝飾器可以為原函式新增一些功能。但如果函式本身是遞迴定義的,則不會僅裝飾最外層,而是在每次遞迴的時候都呼叫裝飾器。這樣會導致原函式無法被直觀的裝飾。首先定義乙個裝飾器 隨便定義乙個裝飾器 defmy decorator fun def decorator args,kwargs fu...

乙個裝飾器裝飾乙個函式

2 如果鍵不存在,則新增到字典中。請使用裝飾器來實現,順便複習下 args和 kwargs的用法 a defselect func def inner args,kwargs if len args 0 if kwargs key in kwargs data print 鍵存在 else func...