装饰器
一句话说清
不改变原有功能代码,不改变原有调用方式,实现调用
第二句话——符合 开放-封闭原则
例子
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()
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号