装饰器示例

'''
装饰器:
不修改源代码,不修改其调用方法
'''

import getpass
import time

usr, pwd = "xiaobai", "111111"

#装饰器
def auth(auth_type):
	def outter_wrapper(func):
		def wrapper(*args, **kwargs):
			if auth_type == "local":
				username = input("usrname:").strip()
				password = getpass.getpass("password:").strip()
				if usr == username and pwd == password:
					print("auth has passed!")
					res = func(*args, **kwargs)
					print("----after authentication")
					return res
				else:
					exit("Invalid username or password!")
			elif auth_type == "ladap":
				print("不会。。。。。")
		return wrapper
	return outter_wrapper

#源代码
def index():
	print("Welcome to the index page!")

@auth(auth_type="local")
def home():
	print("Welcome to the home page!")
	return "from home."

@auth(auth_type="ladap")     # bbs = auth(auth_type="local")
def bbs():
	print("Welcome to the bbs page!")


# index()
print(home())
# bbs()

  

posted @ 2018-03-28 18:10  与君同悦  阅读(139)  评论(0)    收藏  举报