010python路--装饰器应用之页面登录

#需求:京东购物前必须要登录,而再次点击购物时,

#           在新的页面(函数)中,不需要再次输入信息。
#           怎么做到?

#伪代码描述问题所在
假设在文件中,user-zhaowei;passwd-123

def login():
    usename = input("usename:")
    password = input("password:")
    if user == usename and password==passwd:
        print("welcome")

@login
def home():
    print("...")

@login
def home2():
    print("...")

@login
def home3():
    print("...")

# 现在在每个功能模块,都要调用信息登录函数,
# 未免太麻烦,怎样做就简单了?
# 只要登录一次,第二次检测是否登录即可。
# 或者说,每次先检验是否登录。

#创建一个状态标记,标记登录状态
login_status = False
def login():
    if not login_status:
        #进行登录
        login_status = True
    else:
        #pass

具体实现代码

logstate = False
def loger(ways):
    def log(function):
        def inner():
            global logstate
            # global ways
            if logstate is False:
                username = input("输入用户姓名:")
                password = input("输入用户密码:")
                # 在文件中找信息:
                flag = False  # 判断是否找到用户信息的标记
                # 根据参数,查找不同文件
                if ways == 'weixin':
                    open_file = '1.txt'
                elif ways == 'jindong':
                    open_file = '2.txt'
                with open(open_file, 'r', encoding="utf-8") as file_JD:
                    for i in file_JD:
                        # 取出每一行数据,将数据转化到字典中
                        a = i.split('-')
                        if a[0] == username and a[1] == password:
                            flag = True
                            break
                if flag is True:
                    function()
                    logstate = True
            else:
                function()

        return inner
    return log

# 各个功能函数
@loger("weixin")
def home():
    print("you are in home")
@loger("jindong")
def finance():
    print("you are in finance")
@loger("weixin")
def book():
    print("you are in book")

# 1展示现有的栏目
print('''1.home
2.finance
3.book
''')


# 2while中:用户选择服务,进入服务
while True:
    number = input("输入您所需的服务:")
    if number == '1':
       # 调用home函数
        home()
    if number == '2':
       # 调用home函数
       finance()
    if number == '3':
       # 调用home函数
       book()
    if number == ':wq':
        exit("now you are quit")



 

posted @ 2018-10-16 19:58  zhaoweiscsuse  阅读(349)  评论(0)    收藏  举报