装饰器示例

Posted 与君同悦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器示例相关的知识,希望对你有一定的参考价值。

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

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

  

以上是关于装饰器示例的主要内容,如果未能解决你的问题,请参考以下文章

装饰器示例

Python进阶装饰器(Decorator)

python学习5_装饰器

如何使用带有参数的python装饰器?

类中的装饰器在Pycharm中抛出警告

装饰器181029