3/23

一:编写函数,(函数执行的时间用time.sleep(n)模拟)

import time

def fuc1(name):
    time.sleep(2)
    print('%s大帅B,你好'%name)

fuc1('egon')

二:编写装饰器,为函数加上统计时间的功能

import time

def outter(func):
    def wrapper(*args,**kwargs):
        start=time.time()
        res = func(*args,**kwargs)
        end=time.time()
        print(end-start)
    return wrapper

@outter
def fuc1(name):
    time.sleep(2)
    print('%s大帅B,你好'%name)

fuc1('egon')

三:编写装饰器,为函数加上认证的功能

import time

def outter(func):
    def wrapper(*args,**kwargs):
        name=input('输入你的账号: ')
        pwd=input('输入你的密码: ')
        if name=='egon' and pwd == '123':
            res = func(*args,**kwargs)
            return res
        else:
            print('账号或密码错误!')
    return wrapper

@outter
def fuc1(name):
    time.sleep(2)
    print('%s大帅B,你好'%name)

fuc1('egon')

四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

import time

login = {"user_name":None}
def outter(func):
        def wrapper(*args,**kwargs):
            if login["user_name"] !=None:
                res = func(*args, **kwargs)
                return res
            else:
                user_name=input('请输入你的账号: ')
                pass_word=input('请输入你的密码: ')
                with open('pwd.txt','r',encoding='utf-8')as file1:
                    for line in file1:
                        name,pwd=line.strip().split(':')
                        if user_name==name and pass_word==pwd:
                            print('登录成功!')
                            login[user_name]=pass_word
                            res = func(*args, **kwargs)
                            return res
                    else:
                        print('登录失败!')
        return wrapper

@outter
def fuc1(name):
    time.sleep(2)
    print('%s大帅B,你好'%name)

fuc1('egon')

五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录

import time

login = {"user_name": None, 'start_time': 0}


def outter(func):
    def wrapper(*args, **kwargs):
        end = time.time()
        if login["user_name"] != None and end - login['start_time'] < 5:
            res = func(*args, **kwargs)
            return res
        else:
            user_name = input('请输入你的账号: ')
            pass_word = input('请输入你的密码: ')
            with open('pwd.txt', 'r', encoding='utf-8')as file1:
                for line in file1:
                    name, pwd = line.strip().split(':')
                    if user_name == name and pass_word == pwd:
                        print('登录成功!')
                        login[user_name] = pass_word
                        res = func(*args, **kwargs)
                        return res
                else:
                    print('登录失败!')

    return wrapper


@outter
def fuc1(name):
    time.sleep(2)
    print('%s大帅B,你好' % name)


fuc1('egon')

原文地址:https://www.cnblogs.com/bailongcaptain/p/12555576.html