首页 > 代码库 > 装饰器
装饰器
一句话说清
不改变原有功能代码,不改变原有调用方式,实现调用
第二句话——符合 开放-封闭原则
例子
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()
装饰器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。