作者:负能量包子玻璃包各负磁场宣泄区 | 来源:互联网 | 2023-09-24 12:29
不用装饰器调用函数。user_statusFalsedeflogin(auther_type):#auther_type接收参数qq,wxdefouter(f
不用装饰器调用函数。
user_status = False
def login(auther_type): #auther_type接收参数qq,wx
def outer(func): #func接收参数hanshuhenan作为参数。
def inner(*args, **kwargs): #非固定参数,接收模块里传递的任意数量参数。
user = "alex"
password = "123"
global user_status
if not user_status:
user = input("用户名:")
password = input("密码:")
if user == "alex"and password == "123":
print("欢迎登陆")
user_status = True
else:
print("您输入的密码错误,请重新输入")
if user_status:
func(*args,**kwargs)
return inner
return outer
def home():
print("----主页----")
def america():
print("----欧美专区----")
# @login("qq")
def japan(uy,ty):
print("----日本专区----", ty)
# @login("wx") #login("wx) 返回的是outer,outer自动接收henan,返回inner,inner执行内部函数。
def henan(arg,args,rag):
print("----河南专区----", arg, rag)
xx = login("qq")
henan = xx(henan)
henan("movie", "movies", "uiyr")
japan("yti", "ruir")
用有带参数的装饰器(装饰器带参数需要用嵌套函数不断返回内层函数的地址。不带函数的装饰器直接调用下面的函数名作为参数)
user_status = False
def login(auther_type): #auther_type接收参数qq,wx
def outer(func): #func接收参数hanshuhenan作为参数。
def inner(*args, **kwargs): #非固定参数,接收模块里传递的任意数量参数。
user = "alex"
password = "123"
global user_status
if not user_status:
user = input("用户名:")
password = input("密码:")
if user == "alex"and password == "123":
print("欢迎登陆")
user_status = True
else:
print("您输入的密码错误,请重新输入")
if user_status:
func(*args,**kwargs)
return inner
return outer
def home():
print("----主页----")
def america():
print("----欧美专区----")
@login("qq")
def japan(uy,ty):
print("----日本专区----", ty)
@login("wx") #login("wx) 返回的是outer,outer自动接收henan,返回inner,inner执行内部函数。即login("qq")(henan)(*args,**kwargs)
def henan(arg,args,rag):
print("----河南专区----", arg, rag)
henan("movie", "movies", "uiyr")
japan("yti", "ruir")