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()
    

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

  • 相关阅读:
    51nod 1179 最大的最大公约数 (数论)
    POJ 3685 二分套二分
    POJ 3045 贪心
    LIC
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    HDU 2389 Rain on your Parade
    HDU 2819 Swap
    HDU 1281 棋盘游戏
    HDU 1083 Courses
  • 原文地址:https://www.cnblogs.com/youyuan-wang/p/6131930.html
Copyright © 2011-2022 走看看