装饰器学习小程序

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

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

 

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

转载于:https://www.cnblogs.com/youyuan-wang/p/6131930.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值