重庆网站seo外包,企业 网站微信 建设,wordpress设置安全,怎么用ps做网站ui分类目录#xff1a;《系统学习Python》总目录 函数装饰器已经从Python2.4开始可用。正如我们在前文所见到的#xff0c;它们大体上是一种语法糖#xff1a;在def语句结束时通过另一个函数来运行这个函数#xff0c;把最初的函数名重新绑定到返回的结果。
函数装饰器是一种…分类目录《系统学习Python》总目录 函数装饰器已经从Python2.4开始可用。正如我们在前文所见到的它们大体上是一种语法糖在def语句结束时通过另一个函数来运行这个函数把最初的函数名重新绑定到返回的结果。
函数装饰器是一种关于函数的运行时声明函数的定义需要遵守此声明。装饰器在定义函数或方法的def语句的前一行编写并且它由符号以及紧随其后的对于元函数的一个引用组成这是管理另一个函数的函数或其他的可调用对象。
从编写角度看函数装饰器自动映射如下的语法
decorator
def F(arg):passF(x)上述代码为接下来代码的等同形式其中decorator是一个单参数的可调用对象它返回与F具有相同数目参数的一个可调用对象而不是映射为F自身
def F(arg):passF decorator(F)F(x)这一自动名称重绑定在def语句上有效不管它针对一个简单的数或是类中的一个方法。当随后调用F函数的时候它自动调用装饰器所返回的对象该对象可能是实现了所需的包装逻辑的另一个对象或者是最初的函数本身。
换句话说装饰实际把如下的第一行映射为第二行一一尽管装饰器实际上只在装饰的时候运行一次
func(x)
decorator(func)(x)这一自动名称重绑定说明了我们在之前文章中遇到的静态方法和property装饰语法的原因
class A():staticmethoddef a(): # a staticmethod(a)passclass B():propertydef b(): # b property(b)pass在上述两个例子中在def语句的末尾方法名重新绑定到一个内置函数装饰器的返回结果。随后再调用最初的名称将会调用装饰器所返回的对象。在这些特定的情形下原始的名称被重绑定到一个静态方法路由器和property描述符但是其过程要更加通用。
参考文献 [1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.