标签:选择 -- 实现 word pytho flag 原则 fun outer
在符合软件开发的原则上,给代码加一些功能。
软件开发中的一个原则“开放-封闭”原则,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即:
原程序(假设是一个视频网站的后端开发工程师)
def home(): print("---首页----") def vip(): print("----vip专区----") def moive(): print("----电影专区----") def TV(): print("----电视剧----")
现想对几个板块内容进行收费,只有vip才能观看相应区域
flag = False def login(func): def inner(): username = "alex" password = "123" global flag if flag == False: name = input("username:") pw = input("password;") if name == username and pw == password: print("welcome %s....."%name) flag = True else: print("Wrong username or password") else: print("User is logged in") if flag: func() return inner def home(): print("---首页----") @vip # 等同于 vip = login(vip) def vip(): print("----vip专区----") def moive(): print("----电影专区----") def TV(): print("----电视剧----") vip() #inner
flag = False def login(func): def inner(*args,**kwargs): username = "alex" password = "123" global flag if flag == False: name = input("username:") pw = input("password;") if name == username and pw == password: print("welcome %s....."%name) flag = True else: print("Wrong username or password") else: print("User is logged in") if flag: func(*args,**kwargs) return inner def home(): print("---首页----") @login def vip(style): print("----vip专区----",style) def moive(): print("----电影专区----") def TV(): print("----电视剧----") vip("music") TV()
要允许用户选择用qq\weibo\weixin认证
flag = False def login(auth_type): def outer(func): def inner(*args,**kwargs): username = "alex" password = "123" global flag if flag == False: name = input("username:") pw = input("password;") if name == username and pw == password: print("welcome %s....."%name) flag = True else: print("Wrong username or password") else: print("User is logged in") if flag: func(*args,**kwargs) return inner return outer def home(): print("---首页----") @login(‘wx‘) def vip(style): print("----vip专区----",style) def moive(): print("----电影专区----") @login(‘qq‘) def TV(): print("----电视剧----") vip("music") TV()
标签:选择 -- 实现 word pytho flag 原则 fun outer
原文地址:https://www.cnblogs.com/fantsaymwq/p/9597114.html