python 装饰器

Posted on 2018-08-06 16:55  王汝伟  阅读(113)  评论(0)    收藏  举报
user, password = 'db', '12345'


# 当装饰器也需要参入参数时我们需要给装饰器再加一层函数,
# 此时装饰器接受到的方法需要进入第二层函数进行接受,
# 第一层需要接受装饰器自己的参数


def login(login_type):
def outer_wrapper(func):
def wrapper(*agr1, **kwargs):
usernameInput = input("UserName:").strip()
passwordInput = input("Password:").strip()
if login_type == "local":
if user == usernameInput and password == passwordInput:
print("login successful")
res = func(*agr1, **kwargs) # 接受返回结果
return res
else:
print("login fail")
elif login_type == "ldap":
if user == usernameInput and password == passwordInput:

res = func(*agr1, **kwargs)

print("远程登录succes")
return res
else:
print("ldap faild")

return wrapper

return outer_wrapper


def index():
print("welcome to index page")


@login(login_type="local") # 对装饰分类
def home():
print("welcome to home page")
return "from home"


@login(login_type="ldap") # 对装饰分类
def blog():
print("welcome to blog page")


index()
# home()
blog(

)



博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3