目录
1、一些案例导入:这个要求必须是,在发东西之前有那个登录验证
2、开始理装饰器的一些原理了
3、最后就是把代码再简洁一些了
1、一些案例导入:这个要求必须是,在发东西之前有那个登录验证
def fss():
print('发说说')
def ftp():
print('发图片')
def checkLogin(func):
print('登录验证....')
func()
bt = 1
if bt == 1:
#fss()
checkLogin(fss)
else:
#ftp()
checkLogin(ftp)
但是这样的后果就是,在后面的逻辑代码中,略微显得有点冗余。所以引入一个语法糖的概念,感觉丝毫没有任何逻辑,我就是想写装饰器。。
2、开始理装饰器的一些原理了
def checkLogin(func):
def inner():
print('登录验证。。。')
func()
return inner
def fss():
print('发说说')
fss = checkLogin(fss)
def ftp():
print('发图片')
ftp = checkLogin(ftp)
bt = 1
if bt == 1:
fss()
这里有一个很值得注意的地方:
(1)可以写一个闭包,为什么?因为闭包可以在函数里面调用函数,并且,还能返回函数
(2)一定要在闭包的函数之外再写一个return inner具体返回什么不要忘了。
(3)fss = checkLogin(fss)相当于把函数fss传入了checklogin后面的(func)
逻辑很清晰,但是有点绕,回头我再理解理解
3、最后就是把代码再简洁一些了
def checkLogin(func):
def inner():
print('登录验证。。。')
func()
return inner
@checkLogin
def fss():
print('发说说')
# fss = checkLogin(fss)
@checkLogin
def ftp():
print('发图片')
# ftp = checkLogin(ftp)
bt = 1
if bt == 1:
fss()
简洁一些的模式就是把fss = checkLogin(fss)替换成为@checkLogin这是一个语法糖,可以让代码更加简洁一些,之前学过,我又忘了。之后代码实战再说吧。。。我是废物