zoukankan      html  css  js  c++  java
  • 装饰器学习小程序

    通过做一个网页的登录验证程序来学习装饰器

    import time
    
    
    user,passwd = 'alex','abc123'
    
    def auth (auth_type):
    	print ("auth func:",auth_type)
    	def  outer_wrapper(func):
    		
    		def weapper(*args,**kwargs):
    			print("weapper func args",*arge. **kwargs)
    			if auth_type == "local":
    				username = input("username:").strip()
    				password = input("passwd:").strip()
    				if user == username and  passwd == password:
    					print ('33[32;1mUser has passed authentication33[0m')
    					res = func(*args,**kwargs) # from home 
    					print ('---after authentication ')
    					return res 
    				else:
    					exit("33[31;1mInvalid username or password33[0m")
    			elif auth_type == "ldap":
    				print("不会。。。")
    				
    		return wrapper
    	return outer_wrapper
    def index():
    	pirnt("welcome to index page ")
    	
    @auth(auth_type="local")	# home = wrapper
    def home():
        print("home page")
    	return "from home"
    	
    	@auth(auth_type="ldap")	
    def bbs():
        print("bbs page")
    index()
    print(home()) #wrapper
    bbs()
    

     记住:高阶函数+嵌套函数=装饰器,其本质是函数,用来给其它函数添加新功能,且不改变原函数的调用方式。

  • 相关阅读:
    webuploader多次触发注册
    下载二进制文件
    表格打印
    多个请求下 loading 的展示与关闭
    前进刷新后退不刷新
    页面权限控制和登陆验证
    axios.post 配置formdata提交
    react错误边界
    关于beforeRouterEnter获取不到this
    JS
  • 原文地址:https://www.cnblogs.com/youyuan-wang/p/6131930.html
Copyright © 2011-2022 走看看