装饰器的应用 实例
含参数的装饰器必须有三层
例子
自己写的过程中才会发现实际应用的时候各种小错不断,慢慢积累,各种细节才能体会
import time
islogin = False
def login():
username=input(‘请输入用户名:’)
password=input(‘请输入密码’)
if username==‘888’ and password==‘999’:
return True
else:
return
# bool值必须首字母大写,不然报错
islogin=false
#因为未登录从初始就认定的,所以得放到最开始
def login_required(func):
def wrapper(*args,**kwargs):
global islogin
print(‘开始付款…’)
#验证是否登录
if islogin:
func(*args,**kwargs)
else: #跳转登录界面
#islogin=login() #因为没有这个函数,我们需要定义登录函数
#这里因为对全局变量islogin进行了修改,所以需要在上边进行声明
print('用户没有登录,不能付款!')
#调用登录函数进行登录
#用函数就得以固定格式
islogin=login()
#这里因为对全局变量islogin进行了修改,所以需要在上边进行声明
#打印可让运行郭晨更加清晰
print('result:',islogin)
return wrapper
@login_required
def pay(money):
print(‘正在付款’)
time.sleep(2)
print(‘付款完成…’)
print(‘您已付款{}’.format(money))
pay(1000)
pay(8000)