1. 程式人生 > >python之裝飾器應用

python之裝飾器應用

下面的一個例子實現的一個功能是跳轉登陸,根據使用者輸入,讓使用者首次登陸後,記錄登陸狀態,下次無須登陸。還可以根據裝飾器引數選擇登陸模式。

#帳號,密碼儲存。這裡為了方便直接明文了。
user,passwd = 'aaa','123'
weixin = '1'


login_status = False
def login_else(log='jd'):
    def login(h):
        def fun():
            global login_status                     #定義全域性變數
            if login_status == False:               #首次登陸判斷
                if log == 'jd':                     #登陸模式判斷
                    username = input('usernaem :')
                    passwds = input('passwd:')
                    if user == username and passwd == passwds:      #驗證使用者名稱和密碼
                        print('welcome...')
                        login_status = True         #更改登陸狀態為True
                        h()                         #執行定義的home() OR finance() OR book() ...
                    else:
                        print('帳號或密碼錯誤,登入失敗...')
                elif log == 'wx':
                    username = input('驗證碼 :')
                    if weixin == username :
                        print('welcome...')
                        login_status = True
                        h()
                    else:
                        print('帳號或密碼錯誤,登入失敗...')
            else:
                h()
        return fun
    return login
#下面是定義了三個功能函式
@login_else('jd')
def home():
    print('歡迎進入Home介面')

@login_else('wx')
def finance():
    print('你需要什麼金融產品?')

@login_else()
def book():
    print('多讀書,少玩手機。')

#執行過程
print('1. home')
print('2. finance')
print('3. book')
while True:
    key_num = input('請輸入您要進入頁面前的數字:')
    if key_num == '1':
        home()
    elif key_num == '2':
        finance()
    elif key_num == '3':
        book()