内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Python_@修饰器(装饰器)的理解

2018-04-16 16:50 出处:清屏网 人气: 评论(0

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能.

装饰器的作用就是为已经存在的对象添加额外的功能。

def funA(fun):
    print (fun())

def funB():
    print ('B')
    return 1

funA(funB)
-----------------------------
>>>
B
1

可以看出,这个程序的运行过程为:

1.执行函数funB,输出了一个B,另外返回了一个值:1

2.执行函数funA,把funB返回的值1给输出了出来

而修饰器的作用:

def funA(fun):  #函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用,而funB是有返回值的,所以结果输出了返回值1.(个人理解)
    print (fun())

@funA
def funB():
    print ('B')
    return 1
----------------------
>>>
B
1

作用相当于 funA(funB),不过只能放在一个函数或者类定义之前

需要注意的是,如果funB在funA里没用被调用的话,那funB是不会被执行的,如:

def funA(fun):
    print ('funA')

@funA
def funB():
    print ('B')
    return 1
---------------------------
>>>
funA

可以看出,只执行了funA而funB没有被执行,因为print('B')并没有被打印出来.

ps:如果funA不加参数的话,比如直接 def funA(): 这样定义,他是会报错的:

@funA
TypeError: funA() takes 0 positional arguments but 1 was given

大意是@funA中的funA必须要给他提供一个参数,但是你给了0个.

分享给小伙伴们:
本文标签: 修饰器装饰器Python

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号