首页 > 其他 > 详细

装饰器

时间:2016-11-12 23:09:29      阅读:165      评论:0      收藏:0      [点我收藏+]

一句话说清

不改变原有功能代码,不改变原有调用方式,实现调用

第二句话——符合 开放-封闭原则

例子

user_status = False

def login(func):        #定义,并不执行
    def inner(*args,**kwargs):      #用于传递 func参数
        _username = "alex"
        _password = "abc123"
        global user_status

        if user_status == False:
            username = input("user:")
            password = input("password:")
            if username == _username and password == _password:
                password("welcome login...")
                user_status = True
            else:
                print("wrong username or password")

        if user_status == True:
            func(*args,**kwargs)        #将参数传递给func
    return inner        #返回inner内存地址,里面包括了func的执行结果和inner的执行结果

def home():
    print("--------首页-------")
@login          #相当于定义America=login(America),装饰器是把原来的函数的内存地址,当成参数传进去,返回的新内存地址,再赋值给原来函数的变量名
def America():
    print("--------欧美专区-------")
@login
def japan():
    print("--------日韩专区-------")
@login
def henan():
    print("--------河南专区-------")

home()
America()

  

装饰器

原文:http://www.cnblogs.com/fengdao/p/6057544.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!