装饰器学习小程序

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

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 ('\033[32;1mUser has passed authentication\033[0m')
					res = func(*args,**kwargs) # from home 
					print ('---after authentication ')
					return res 
				else:
					exit("\033[31;1mInvalid username or password\033[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()

 

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

posted @ 2016-12-04 21:21  *七里香*  阅读(130)  评论(0编辑  收藏  举报