新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
修饰符,比如说
创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站制作、成都网站设计,塑造企业网络形象打造互联网企业效应。
class A:
@staticmethod
def m(self):
pass
就相当于
class A:
def m(self):
pass
m = staticmethod(m)
其实就是一调用一个函数参数为下行的变量,并且替换它
扩展资料:
函数修饰符
@用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,出现在函数定义的前一行,不允许和函数定义在同一行。
一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西。
在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@这样的修饰符的时候会优先解除@后的内容,直接就把@的下一行的函数或者类作为@后边函数的参数,然后将返回值赋给下一个修饰的函数对象。
参考资料来源:百度百科-Python (计算机程序设计语言)
python函数修饰符@ 修饰符 ‘@’符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。 只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。 本质上讲,装饰符@类似于 回调函数 ,把其它的函数(暂且称为目的参数,后面紧接着的函数)作为自己的入参,在目的函数执行前,执行一些自己的操作, 比如:计数、打印一些提示信息等,然后返回目的函数。下面列举一个简单的例子。
创建函数修饰符的规则:
(1)修饰符是一个函数
(2)修饰符取被修饰函数为参数
(3)修饰符返回一个新函数
(4)修饰符维护被维护函数的签名
例子1: 被修饰函数不带参数
运行结果:
例子2: 使用functools模块提供的修改函数属性的方法wraps
运行结果:
可见test1的函数名称变了,如果某些代码用到就会出问题,可以使用functools模块提供的修改函数属性的方法wraps
运行结果:
例子3: 被修饰函数带参数
运行结果:
例子4: 修饰符带参数 ,需要比上面例子多一层包装
运行结果:
【@】符号在python中是装饰器的意思。
装饰器对一个可调用对象(函数、方法、类等等)进行装饰,它返回的也是一个可调用对象。
一般情况下,装饰器是对被装饰对象的修饰与增强。用现实事物类比的话,可以类比为中间商:中间商不生产产品,它将工厂生产的产品进行包装、运输后再销售给顾客。装饰器不实现核心功能,它提供对目标函数调用的封装与强。
它装饰的方法返回值是一个对象(BillList、Bill、List[BillDetail]等),而装饰器【enabled_cache】的作用如它的名称一样:使用缓存。可以看到,这个装饰器函数中定义了一个函数【wrapper】然后将这个wrapper作为返回值。这样,原本调用ProductionBos.bill_with_last_week的代码就不需要做任何改变就能享受到ProductionBos.bill_with_last_week原有的功能(得到一个BillList对象)和enabled_cache提供的附加功能(如果该对象有缓存,就不再从数据库查询)。