Python實現帶引數的使用者驗證功能裝飾器示例

2022-09-27 04:09:12 字數 1578 閱讀 5191

user_lifxgigxdist = [

, ,

, ]# 初始狀態,用來儲存登陸的使用者,

client_dic =

# 新增新功能

def auth(auth_type='filedb'):

def auth_func(func):

def wrapper(*args, **kwargs):

print(auth_typwww.cppcns.come)

if auth_type == 'fildb':

# 引數檢查,判斷是否有使用者登入,如果有,不用驗證,直接執行函式的功能

if client_dic['username'] and client_dic['login']:

res = func(*args, **kwargs)

return res

# 輸入使用者名稱和密碼

username = input('使用者名稱:').strip()

passwd = input('passwd:').strip()

# 對比列表,檢查使用者名稱和密碼是否正確

for user_dic in user_list:

if username == user_dic['name'] and passwd == user_dic[www.cppcns.com'passwd']:

client_dic['username'] = user_dic['name']

client_dic['login'] = true

res = func(*args,fxgigxdi **kwargs)

return res

else:

print('使用者名稱或者密碼錯誤!')

elif auth_type == 'pass':

print('不知道什麼驗證方式')

res = func(*args, **kwargs)

return res

else:

print('一臉蒙蔽的驗證方式')

res = func(*args, **kwargs)

return res

return wrapper

return auth_func

@auth(auth_type='filedb')

def index():

print("歡迎來到主頁")

@auth(auth_type='user')

def home(name):

print("歡迎回家:%s" % name)

@au程式設計客棧th(auth_type='pass')

def shoppping_car():

print('購物車裡有[%s,%s,%s]' % ('奶茶', '妹妹', '娃娃'))

print(client_dic)

index()

print(client_dic)

home('root')

執行結果:

filedb

一臉蒙蔽的驗證方式

歡迎來到主頁

user

一臉蒙蔽的驗證方式

歡迎回家:root

python 實現帶引數的裝飾器

coding utf8 author bluesli defbefore request,kwarg print before defafter request,kwarg print after deffilter before fun,after fun defouter main fun de...

Python 帶引數的使用者驗證功能裝飾器

user list 初始狀態,用來儲存登陸的使用者,client dic 新增新功能 def auth auth type filedb def auth func func print auth type if auth type fildb 引數檢查,判斷是否有使用者登入,如果有,不用驗證,直接...

Python 指令碼帶引數

如果想對python指令碼傳引數,python中對應的argc,ar c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.ar 指令碼名 sys.ar 0 引數1 sys.ar 1 引數2 sys.ar 2 test.py import sys print 指令碼名 sys.a...