python装饰器的使用方法
1.函数作为参数出现,2,作为闭包出现
例:
# 无参数装饰器
def house(func):
def wapper():
func()
print("进行装修")
return wapper
@house
def new_house():
print("这是一个毛坯房")
new_house()
含有参数的函数,需要在装饰器加上对应的函数
def house(func):
def wapper(name): #传入对应的参数值
func(name) #传入对应的参数值
print("进行装修")
return wapper
@house
def new_house(name):
print("户主是{},这是一个毛坯房".format(name))
new_house("小明")
含有多个参数的函数,需要在装饰器加上对应的函数
def house(func):
def wapper(*args,**kwargs):
func(*args,**kwargs)
print("进行装修")
return wapper
@house
def new_house(*args,**kwargs): #使用*args,**kwargs
print("户主是{},这是一个毛坯房".format(args))
new_house("小明")
结合使用装饰器的例:
import time
iszt = False
def login():
yhm = {"name":"fjc","pwd":"123456"}
name = input("请输入用户名")
pwd =input("请输入密码")
if name == yhm.get("name") and pwd == yhm.get("pwd"):
return True
else:
return False
def zt(func):
def wapper(*args,**kwargs):
global iszt
if iszt == True:
print("登陆成功{}".format(iszt))
func(*args,*kwargs)
else:
print("没有登录")
print("现在的状态为{}".format(iszt))
iszt =login()
return wapper
@zt
def pay(money):
print("*********************付款{}".format(money))
time.sleep(2)
print("付款成功")
pay(100)
pay(200)
time.sleep(20)
iszt =False
pay(200)
来源:CSDN
作者:Mr Feng
链接:https://blog.csdn.net/qq_45550930/article/details/104813077