装饰复杂函数

# 为登录功能添加账号检验功能:必须是3个及以上英文字母组成
def check_user(func):
def inner(user, pwd):
if not (user.isalpha() and len(user) >= 3):
return '账号不合法'
res = func(user, pwd)
return res
return inner

# 为登录功能添加密码检验功能:必须是3个及以上英文字母或数字组成
def check_pwd(func):
def inner(*args, **kwargs):
pwd = args[1]
if not (pwd.isalnum() and len(pwd) >= 3):
return '密码不合法'
res = func(*args, **kwargs)
return res
return inner

# 对登录结果的修饰装饰器:True=>登录成功 False=>登录失败
def change_res(func):
def inner(*args, **kwargs):
res = func(*args, **kwargs)
if res == True:
return '登录成功'
return '登录失败'
return inner


@check_user # login = check_user(func=login) = inner
@check_pwd
@change_res
def login(user, pwd):
if user == 'owen' and pwd == '123':
return True
return False

user = input('user: ')
pwd = input('pwd: ')
res = login(user, pwd)

print(res)



# 装饰器:固定写法
def outer(func):
def inner(*args, **kwargs):
pass
res = func(*args, **kwargs)
pass
return res
return inner

@outer
def f1(): # 任意函数
pass
f1()


posted @ 2019-04-28 22:30  zhouyuqiang  阅读(138)  评论(0编辑  收藏  举报