装饰器对一个可调用对象(函数、方法、类等等)进行装饰,它返回的也是一个可调用对象.
一般情况下,装饰器是对被装饰对象的修饰与增强.用现实事物类比的话,可以类比为中间商:中间商不生产产品,它将工厂生产的产品进行包装、运输后再销售给顾客.装饰器不实现核心功能,它提供对目标函数调用的封装与强.
它装饰的方法返回值是一个对象(BillList、Bill、List[BillDetail]等),而装饰器【enabled_cache】的作用如它的名称一样:使用缓存.可以看到,这个装饰器函数中定义了一个函数【wrapper】然后将这个wrapper作为返回值.这样,原本调用ProductionBos.bill_with_last_week的代码就不需要做任何改变就能享受到ProductionBos.bill_with_last_week原有的功能(得到一个BillList对象)和enabled_cache提供的附加功能(如果该对象有缓存,就不再从数据库查询).
修饰符,比如说
class A:
@staticmethod
def m(self):
pass
就相当于
m = staticmethod(m)
其实就是一调用一个函数参数为下行的变量,并且替换它
扩展资料:
函数修饰符
@用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,出现在函数定义的前一行,不允许和函数定义在同一行.
一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西.
-常常出现在python函数定义的函数名后面,为函数添加元数据,描述函数的返回类型,从而方便开发人员使用.比如:
通常的写法是:
def attrs(self) - _Attrs:
这种写法通常是写在函数的函数名后面
def add(x, y) - int:
return x◆y
这里面,元数据表明了函数的返回值为int类型.
至于楼主问题中的,- _Attr则表明函数返回的是一个外部可访问的类的私有变量.
以上就是土嘎嘎小编为大家整理的python函数@相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!