您的位置:首页 > 编程语言 > Python开发

python 装饰器 运行时动态增加功能

2018-02-11 11:30 465 查看

装饰器

定义:作用在代码运行期间动态的增加功能。本质上是返回函数的高阶函数。

装饰函数,用于在已经定义好的某一个函数(或代码段)使用时,输入或者操作自己想要的数据。

#一个已有的代码:
def Hello():
print(' Word!')


函数对象中,可以拿到函数名字的一个属性是:
__name__


注意这里是前后两个下划线:
._ _name_ _
(我将中间放一个空格为了方便看清楚,实际使用时不用中间的空格)

> > > Hello.__name__
> > > 'Hello'
> > > f=Hello
> > > f()
> > > Word!


使用装饰函数,在调用Hello函数时,进行一些操作。

1.装饰器无参数,函数无参数

装饰函数中要把需要被装饰的函数当做参数传进去

def decorator(func):
print('%s '%func.__name__,end='')
#返回被装饰的函数
return func


装饰函数来装饰Hello函数

@decorator
def Hello():
print(' Word!')


打印被装饰好的函数

Hello()


输出: Hello Word!

2.装饰器无参数,函数有参数

def decorator(func):
print('%s'%func.__name__,end='')
return func
@decorator
def Hello(string):
print(string,'❤')
Hello(' python ')


输出:

Yeah!
Hello python  ❤


3.装饰器参数,函数有参数

def decorator(*string):
def func(func):
print('%s'%string)
print('%s'%func.__name__,end='')
return func
return func
@decorator('Yeah!')
def Hello(string):
print(string,'❤')
Hello(' python ')


输出:

Yeah!
Hello python  ❤


4.通用

def decorator(*string):
if len(string)>1:
def func1(func):
print(string)
print('%s'%func.__name__,end='')
return func
return func1
else:
def func2(func):
print('no string')
print('%s'%func.__name__,end='')
return func
return func2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐