zoukankan      html  css  js  c++  java
  • 装饰器

    '''
    装饰器的作用
    加入购物车,付款,修改收获地址.....:
    需要判断用户的登录状态

    '''

    '''def func(number):
    a = 1000

    def inner_func():
    nonlocal a
    for i in range(number):
    a += 1
    print(a)

    return inner_func()


    func(4)'''

    # 地址引用
    '''def test():
    print('-----test-------')


    t = test()'''
    '''
    装饰器使用的特点,函数是作为参数出现的,是传递给另外有一个函数的;要有闭包的特点出现,
    '''

    # 定义一个装饰器
    '''def decorate(func):
    a = 100

    def wrapper():
    print('---------->11111')
    func()
    print('--------->222222')

    return wrapper()

    #使用装饰器 @装饰器的名字
    @decorate
    def house():
    print('我是毛坯房')
    '''

    '''def zhuangxiu(func):
    def zhuangshi():
    func()
    print('已经装修完成')

    return zhuangshi()


    @zhuangxiu
    def mpf():
    print('我是一个毛坯房')


    mpf()
    '''

    '''import time


    # 登录验证

    def decorate(func):
    def wrapper(a):
    print('正在检验----')
    time.sleep(1)
    print('检验完毕----')
    # 调用我的原函数
    func(a)
    return wrapper


    @decorate
    def f1(n):
    print('------f1------',n)

    f1(5)
    @decorate
    def f2(name):
    print('------f2-----',name)
    f2('zzh')
    '''

    '''
    # 多层装饰器 离的近的优先使用
    # 装饰器带参数
    def outer(a):#负责接收装饰器的参数
    def decorate(func):#负责接收函数
    def wrapper(*args, **kwargs):#负责接收函数的参数
    func(*args, **kwargs)
    print('----->铺地砖{}'.format(a))
    return wrapper
    return decorate


    @outer(a=10)
    def house(time):
    print('我什么时候拿到房子{}'.format(time))


    house(1997)
    '''

    '''
    @outer(a=10)
    def house(time):
    print('我什么时候拿到房子{}'.format(time))


    house(1997)'''
    '''


    @outer(a=1000)
    def street():
    print('新街道的名字是:黑泉路')
    street()
    '''

    # 开发:登录验证


    import time

    is_login = False


    def login():
    global is_login
    usr = input('输入你的用户名')
    pwd = input('输入你的密码')
    if usr == 'admin' and pwd == '123456':
    print('登录成功')
    is_login = True
    return True
    else:
    print('登录失败')
    return False


    def login_required(func):
    def wrapper(*args, **kwargs):
    # 验证你的用户是否登录
    print('进入付款界面----------')
    if is_login:
    func(*args, **kwargs)
    else:
    print('你没有登录不能付款')
    login()

    # 跳转到登录页面

    return wrapper


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


    pay(100000)
    pay(8)
  • 相关阅读:
    .net core 基于IIS发布
    所有开源播放器
    JWT的相关讲解
    .NET Core2.0 使用EF做数据操作
    任意的组合,数组或数组,数组或list,list或list不用循环得出匹配的总数和需要的字段列
    linq to sql学习
    winform文本框怎么实现html的placeholder效果
    [数据结构]-单链表实现栈
    [数据结构]-数组实现栈
    [数据结构]-单链表
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306900.html
Copyright © 2011-2022 走看看