#其实也是个函数 返回值也是个函数
#用途:不修改原来函数代码的前提下增加一些业务代码
#不能修改核心业务
#say的装饰器
# def outSay(f):#f是被装饰的函数的名字
# #返回函数
# def inner():
# print("*************")
# f() #核心代码
# def inner2():
# print("---------")
# f()
# def inner3():
# print("&&&&&")
# f()
# return inner3
# @outSay
# def say():
# print("hello")
#
# say()
"装饰器 "
def outSum(f): #f 存放 sum函数名
def inner(a, b): #inner返回函数 ab 存取num1 num2 的参量
print("欢迎来到加法大法") #修饰内容
f(a, b) # sum 执行函数
return inner #选择返回函数 函数名
@outSum #增加装饰器
def sum(num1, num2):
print(num1 + num2)
sum(1,2)
控制台输结果
欢迎来到加法大法
3
"不定长参数"
def outSum(f): #f 存放 sum函数名
def inner(*num): #inner返回函数 ab 存取num1 num2 的参量
print("欢迎来到加法大法") #修饰内容
f(*num) # sum 执行函数
return inner #选择返回函数 函数名
@outSum #增加装饰器
def sum(*num):
print(num[0] + num[1])
sum(1, 2)
控制台输结果
欢迎来到加法大法
例子 :
def outDenglu(f):
def inner():
print("""
???????????????? ????????????????
欢迎来到登陆系统
???????????????? ????????????????
""")
f()
return inner
@outDenglu
def denglu(): # 登陆系统
panduan = True
name = input("请输入用户名")
word = input("请输入密码")
while panduan:
if name == "admin" and word == "123":
print("登陆成功")
panduan = False
else:
print("密码错误,请重新输入")
denglu()
控制台输出结果
???????????????? ????????????????
欢迎来到登陆系统
???????????????? ????????????????
请输入用户名admin
请输入密码123
登陆成功