多层语法糖嵌套
user_pwd = {"Xanadu": "521"}
bank_pwd = {"pay_password": "521", "balance": 1000}
name_input = input("请输入姓名:")
pwd_input = input("请输入密码:")
amount_input = input("请输入取款金额:")
def check(tag):
if tag == "login_check":
def check_user(func):
def inner(*args, **kwargs):
if name_input not in user_pwd:
return f"{kwargs['name']}用户名未注册!"
if user_pwd[name_input] != pwd_input:
return f"{kwargs['name']}密码错误!"
else:
return func(**kwargs)
return inner
return check_user
if tag == "bank_check":
def check_bank(func):
pay_pwd = input("请输入支付密码:")
def inner(*args, **kwargs):
if pay_pwd != bank_pwd['pay_password']:
return "支付密码错误!"
if not kwargs["amount"].isdigit():
return "请输入数字!"
amount = int(kwargs["amount"])
if amount > bank_pwd["balance"]:
return "余额不足!"
else:
res = func(*args, **kwargs)
return res
return inner
return check_bank
@check("login_check")
@check("bank_check")
def get_balance(name, amount):
return f"{name}成功去到{amount}元!"
print(get_balance(name=name_input, amount=amount_input))
'''
请输入姓名:Xanadu
请输入密码:521
请输入取款金额:500
请输入支付密码:521
Xanadu成功去到500元!
'''
@check("login_check") get_balance = check_user(get_balance)
@check("bank_check") get_balance = check_bank(get_balance)
def desc_a(func):
print(f'111')
def inner(*args, **kwargs):
print(f'222')
res = func(*args, **kwargs)
print(f'333')
return res
return inner
def desc_b(func):
print(f'444')
def inner(*args, **kwargs):
print(f'555')
res = func(*args, **kwargs)
print(f'666')
return res
return inner
def add():
print(f'777')
add = desc_a(add)
add = desc_b(add)
add()

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY