8535.com-新浦京娱乐场官网|欢迎您

python装饰器decorator介绍,pythondecorator

来源:http://www.dnamique.com 作者:计算机网络 人气:57 发布时间:2020-01-04
摘要:python装饰器decorator介绍,pythondecorator 一、装饰器decorator decorator设计形式允许动态地对现存的靶子或函数包装以致于修正现成的职务和作为,简单地讲用来动态地扩大现存的功力。其实

python装饰器decorator介绍,pythondecorator

一、装饰器decorator

decorator设计形式允许动态地对现存的靶子或函数包装以致于修正现成的职务和作为,简单地讲用来动态地扩大现存的功力。其实也等于别的语言中的AOP的概念,将指标或函数的确实意义也其余救助的效应的分开。

二、Python中的decorator

python中的decorator日常为输入二个函数,经过装饰后回来另叁个函数。  比较常用的功力相符选用decorator来兑现,举个例子python自带的staticmethod和classmethod。

装饰器有三种情势:

复制代码 代码如下:

@A
def foo():
    pass

相当于:

复制代码 代码如下:

def foo():
    pass
foo = A(foo)

其次种为带参数的:

复制代码 代码如下:

@A(arg)
def foo():
    pass

则相当于:

复制代码 代码如下:

def foo():
    pass
foo = A(arg)(foo)

能够观望第意气风发种的装饰器是个再次回到函数的函数,第二种的装饰器是个再次回到函数的函数的函数。

python中的decorator能够八个同不经常间接选举择,如下:

复制代码 代码如下:

@A
@B
@C
def f (): pass
   
# it is same as below
def f(): pass
f = A(B(C(f)))

三、Python中常用的decorator实例

decorator经常用来在实行前开展权力认证,日志记录,以至校订传入参数,或许在试行后对回到结果进行预管理,以致足以截断函数的试行等等。

实例1:

复制代码 代码如下:

from functools import wraps
def logged(func):
    @wraps(func)
    def with_logging(*args, **kwargs):
        print (func.__name__() + " was called")
        return func(*args, **kwargs)
    return with_logging

@logged
def f(x):
   """does some math"""
   return x + x * x

print (f.__name__)  # prints 'f'
print (f.__doc__)   # prints 'does some math'

留意functools.wraps(State of Qatar函数的效率:调用经过装修的函数,约等于调用贰个新函数,那查看函数参数,注释,以至函数名的时候,就只赏心悦目到装饰器的有关消息,被卷入函数的音信被裁撤了。而wraps则足以帮你转移这个消息,参见

大器晚成、装饰器decorator decorator设计情势允许动态地对现存的靶子或函数包装以至于校正现成的天职和行为...

本文由8535.com-新浦京娱乐场官网|欢迎您发布于计算机网络,转载请注明出处:python装饰器decorator介绍,pythondecorator

关键词:

最火资讯