---恢复内容开始---
实现了完整的功能后,还可以对程序做进一步的优化:
user_state = False
name = "sunjing"
password = "123"
def login(func1):
def inner(*args,**kwargs): #3.此时就可以在inner函数中加一个非固定参数来接收jap()中的参数
global user_state
if user_state == False:
user_name = input("name:")
user_password = input("password:")
if user_name == name and user_password == password:
print("login success")
user_state = True
else:
print("wrong name or password")
if user_state:
func1(*args,**kwargs) #4.同样,需要在执行原jap()函数时,同样加入非固定参数
return inner
@login
def jap(style): #1.假如日韩专区下还有分类,需要显示
print("----日韩专区----",style) #5.此时就可以输出不同的分区了
def america():
print("----欧美专区----")
def homemade():
print("----国产专区----")
def cartoon():
print("----动漫专区----")
jap("BT") #2.显示日韩专区下的BT分类
完成后,发现还有要求,需要在登录时确认用微信或QQ登录,于是写下了如下代码:
def login(func): #此处的func为"QQ" def outter(func1): #此处的func1为jap def inner(*args,**kwargs): global user_state if user_state == False: user_name = input("name:") user_password = input("password:") if user_name == name and user_password == password: print("login success") user_state = True else: print("wrong name or password") if user_state: func1(*args,**kwargs) return inner return outter @login("QQ") #此处可以判断登录时用QQ登录。执行步骤是这样的1.先执行login(“QQ”) 把QQ作为一个参数执行login函数。2.得到返回值outter,把jap作为outter函数的一个参数,执行outter函数
def jap(style): #3.得到返回值inner再赋值给jap print("----日韩专区----",style) def america(): print("----欧美专区----") def homemade(): print("----国产专区----") def cartoon(): print("----动漫专区----") jap("BT") #此时调用jap()函数相当于调用inner()函数,而"BT"相当于inner()的一个参数
这样就完成了对登录方式的要求