在学习装饰器之前,我们先从熟悉的函数入手。。。。
函数一:
foo:函数名,表示函数在内存中的地址。
foo() :表示执行函数foo。
函数二:
执行foo()不再是以前的函数,而是lambda函数。这里就说明了不仅变量可以重命名,而且函数也可以重命名,下次执行就调用重命名后的函数。
函数三:
简单说明执行顺序:
首先执行1、2、3,将其存入内存
再接着将3中的func传给arg,也就是将实参传给形参,接着arg()变为func()
最后执行func(),打印字符aa
也就是说函数也可以作为参数进行传递,即在python中一切都是对象,对象都是由类创建的。
函数四:
解释:
执行auth()函数,将f1传递给func,即f1()等价于func(),接着执行inner函数,由于inner函数没有被调用,所以不执行,接下来return inner,也就是auth函数返回一个inner函数,就可以等价为代码中注释的内容。下来执行inner函数,首先打印before,再执行原函数f1(),即打印字符f1,执行完毕。
从上面代码可以看出,auth函数中有两层函数。
函数五:
上面已经提到过,函数可以重命名,因此函数四可以写成为
函数六:
在python中,可以将函数五写成如下的形式
在f1()上面写成@auth,它就表示为先执行auth(f1),再将auth(f1)赋值为f1.这就是python的装饰器。
这里执行auth函数,被装饰的函数作为参数auth(f1)。auth函数的返回值,赋值给被装饰的函数的函数名。
时间: 2024-10-23 02:47:12