什么是闭包?解释器?

#外部函数包含内部函数
#外部函数具有返回值
#返回值是:内部函数名
#内部函数引用了外部函数的局部变量

def Func():

    def InerFunc():
        pass
    return InerFunc
#装饰器
#函数A是作为参数出现的,函数B接收函数A作为参数
#要有闭包的特点


def decorate(func):
    a=100
    def wrapper():

        func()
        print('------------刷墙')
        print('------------铺地板')
        print(a)
    return wrapper  #闭包

@decorate
#house是被装饰函数,将被装饰函数作为参数传给装饰器,并执行decorate(),将返回值wrapper赋值给house。
def house():
    print('我是一个毛坯房。。。。')
house()
#a=decorate(house)
#a()


#开发,登陆验证
import time
islogin=False#默认没有登陆,全局变量

def login():#定一个登陆函数
    username=input('请输入用户名:')
    password=input('请输入密码:')
    if username=='admin' and password=='12345':
        return True

 #定义一个装饰器
def login_required(func):
    def wrapped(*args,**kwargs):
        #验证用户是否登录
        global islogin
        if islogin:
            func(*args,**kwargs)
        else: #跳转到登录页面
            islogin=login()

    return wrapped


@login_required
def pay(money):
    print('正在付款,付款金额是:{}元'.format(money))
    print('付款中......')
    time.sleep(2)
    print('付款完成!')

pay(100)
pay(100)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值