python入门装饰器的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门装饰器的理解相关的知识,希望对你有一定的参考价值。

装饰器用于拓展原有函数功能的一种函数
比如:

def helloWorld(fun)
        def out()
                print ("======start========")
                fun()
                print ("=====end======")
        return out

@helloWorld
def back ()
        print ("let‘s go")

back()

运行结果:

======start========
let‘s go
=====end======

技术分享图片br/>@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次赋值操作
@helloWorld这就是一个简单的装饰器
运行步骤def back()→return out →def out()
带参数的装饰器:

def helloWorld(arg):
        def out(fun):
                def go():
                        print ("======start========")
                        fun()
                        print ("=====end======")
                return go       
        return out

@helloWorld("will‘)
def back ():
        print ("let‘s go")

back()

运行结果:

======start========
let‘s go
=====end======

看到装饰器自带一个参数传入,那么运行过程中这个参数会代入运行,整体的运行过程
技术分享图片

当函数也带参数参与:

def logging(taskname):

    def wrapper(func):

        def retu(*args, **wkargs):
            # 函数通过装饰起参数给装饰器传送参数
            print (‘before task‘,taskname)
            # 装饰器传变量给函数
            taskid = 1
            summer, funcres = func(taskid, *args, **wkargs)
            print (‘after task‘, taskid, summer)

        return retu
    return wrapper

@logging("test")
def testd(taskid):
    print ("testd runing",taskid)
    return "task summer success eg",[]

testd()

运行结果和步骤:
技术分享图片


以上是关于python入门装饰器的理解的主要内容,如果未能解决你的问题,请参考以下文章

人人都能看懂的 Python 装饰器入门教程

转发对python装饰器的理解

python闭包和装饰器的理解

Python入门学习-DAY11-装饰器

Python学习---装饰器的学习1210

Python入门篇之装饰器