zoukankan      html  css  js  c++  java
  • 函数之装饰器

    as_start = False
    def login(func):
    def inner():
    global as_start
    if as_start == False:
    username = input('输入用户名字:')
    password = input('输入密码:')
    if username == 'alex' and password == '1234':
    print('登录成功!')
    as_start = True
    else:
    print('账户或者密码错误!')
    if as_start == True:
    func()
    return inner
    def func1():
    print('河南专区!')
    def func2():
    print('欧美专区!')
    @login
    def func3():
    print('日韩专区!')
    #func3 = login(func3)
    func3()

    #@login #语法糖
    #func3() = login(func3)#上下这俩方式是对等的
    #在这里第一执行’login(func3)‘同时传入‘func3’程序由上向下执行遇见函数‘inner()’然后向下找调用‘inner’的调用同时也找‘func()’的调用但是func()
    不在登录状态,就说明func()没有登录随之去判断‘as_start’是否是‘True’ 如果是‘True’就会直接执行‘func()打印‘日韩专区’否则就执行‘inner’登录,’func()等于
    老func3()顺之向下执行最后把‘inner’返回给’login()‘而‘login()’又等于’func3‘此时调用‘func3’()就是调用‘innere()’然后登录成功,
    再次判断‘as_start’是否是‘True’结果为‘True’ 最后调用func()即func3()打印‘日韩专区’



    as_style = False
    def login(style):
    def outer(func):
    def ineer(*args, **kwargs):
    global as_style
    username = input('请输入账户名字:')
    password = input('请输入密码!')
    if as_style == False:
    if username == 'alex' and password == '1234':
    as_style = Truejishang
    else:
    print('账号或者密码错误!')
    if as_style ==True:
    func(*args, **kwargs)
    return ineer
    return outer
    def emcari():
    print('欧美专区!')
    def japan():
    print('日本专区!')
    login(‘qq’)
    def henan(style):
    print('河南专区!')
    ss = login('qq')
    #henan = ss(henan)
    henan('3p')
    #继上次又加了一层函数,把‘outer’的内存地址给了‘ss’其实这一步是在‘login’里完成的 然后调用河南就是‘ineer’继续之前的运行法运行
  • 相关阅读:
    FZU-Problem 2150 Fire Game
    LeetCode120——Triangle
    Coder-Strike 2014
    AP INVOICES IMPORT API(NOT request)
    NYOJ-277-车牌号
    软件測试方法
    C++中字符数组和字符串string
    【机器学习算法-python实现】PCA 主成分分析、降维
    主题讲座:移动互联网时代的创业机会
    ubuntu环境eclipse配置
  • 原文地址:https://www.cnblogs.com/yuexijun/p/10009742.html
Copyright © 2011-2022 走看看