python装饰器的应用。

1、装饰器的作用

装饰器顾名思义,就是起一个装饰作用,悄无声息的给一个函数添加一些功能,又不改变它自身的定义代码。(即“开放封闭原则”)

2、代码 .py


  """要求登录成功一次,后续的函数都无需再输入用户名和密码"""
import time

account_flag = False


def login(func):
    account_dict = {}

    def inner(*args, **kwargs):
        global account_flag

        if not account_flag:
            """ 将用户信息装载成字典格式"""
            with open(r'/Users/dyh/PycharmProjects/pythonProject1/文件名/装饰器/登录信息.txt', mode='rt', encoding='utf-8') as f:
                account_data = f.read().split('\n')
                for item in account_data:
                    user, password = item.split(':')
                    account_dict.setdefault(user, password)  # 用户信息装填成字典

            username = input("username>>>>>")
            pwd = input("password>>>>>>")

            if account_dict.__contains__(username) and account_dict[username] == pwd:
                account_flag = True
                print("登录中")
                time.sleep(1)
                res = func(*args, **kwargs)
                print("登录成功")
                return res
            else:
                print("账号或者密码输入错误")
        else:
            print("已经通过验证")
            res = func(*args, **kwargs)
            return res

    return inner


@login
def ground():
    print("主界面已加载>>>>>>>>>>")


@login
def music():
    print("music专区>>>>>>>>>>")


@login
def sing(name):
    print(f'{name}即将播放>>>>>>>>')

ground()
music()
sing('blue')

3、运行结果

username>>>>>dyhdyh
password>>>>>>dyh011005
登录中
主界面已加载>>>>>>>>>>
登录成功
已经通过验证
music专区>>>>>>>>>>
已经通过验证
blue即将播放>>>>>>>>

4、总结

保留自己的代码风格,尽量熟练代码,学习这次代码中将信息装载成字典的方法。

posted @ 2022-01-12 00:23  Medjay  阅读(150)  评论(1)    收藏  举报