在符合软件开发的原则上,给代码加一些功能。
软件开发中的一个原则“开放-封闭”原则,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即:
原程序(假设是一个视频网站的后端开发工程师)
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()
原文:https://www.cnblogs.com/fantsaymwq/p/9597114.html