装饰器作用:在函数名以及函数体不改变的前提下, 给一个函数附加一些额外代码
案例,发说说, 发图片附加身份验证 操作
def checkLogin(func):
def inner():
print("登录验证...")
func()
return inner
# 定义两个功能函数
@checkLogin
def fss():
print("发说说")
# fss = checkLogin(fss)
# fss = def inner():
# print("登录验证...")
# fss()
#
# print(fss)
# 语法糖 写法
@checkLogin
def ftp():
print("发图片")
# ftp = checkLogin(ftp)
# 相关的逻辑代码
btnIndex = 1
if btnIndex == 1:
fss()
else:
ftp()
带有参数的装饰器
通过@装饰器(参数)的方式, 调用这个函数, 并传递参数; 并把返回值, 再次当做装饰器进行使用,先计算 @ 后面的内容, 把这个内容当做是装饰器
def getzsq(char):
def zsq(func):
def inner():
print(char * 30)
func()
return inner
return zsq
# def zsqe(func):
# def inner():
# print("=" * 30)
# func()
# return inner
#
# def zsqs(func):
# def inner():
# print("*" * 30)
# func()
# return inner
@getzsq("*") # f1 = zsq(f1)
def f1():
print("666")
f1()