python装饰器

闭包的概念

1、在一个函数内部对外部变量进行引用
2、一般外部函数返回值为内部函数,那么内部函数被认为是闭包

将test函数作为入参到run_time1中,执行内部函数wrapper,返回wrapper中返回的函数


def run_time1(func):
    def wrapper():
        print("没有带参数")
        return func()
    return wrapper

@run_time1
def test():
    print(r'hello,it\'s me')
if __name__ == '__main__':

    test()


装饰器是一种闭包应用
以下例子wrapper为内部函数、run_time为外部函数
func为外部的变量,在wrappeer内进行引用
run_time返回值wrapper是内部函数
将person函数作为入参到run_time,执行内部函数wrapper,返回wrapper中返回的函数
带参数的函数使用装饰器只需要使用不定长参数接收即可



import time as t

#带参数的
def run_time(func):
    def wrapper(*args, **kwargs):
        print(t.ctime())
        return func(*args, **kwargs)
    return wrapper

@run_time
def person(name):
    print("我的名字叫{}".format(name))





if __name__ == '__main__':

    person("张三")

装饰器带参数

def run_time2(level):
    print("level:{}time:{}".format({level},t.ctime()))
    def outwrapper(func):
        def wrapper(*args,**kwargs):
            print("我的名字{}".format(*args))
            return func(*args,**kwargs)
        return wrapper
    return outwrapper

@run_time2("DEBUG")
def person(name):
    print(name)


if __name__ == '__main__':

    person("张三")


展示结果:

level:DEBUGtime:Mon Apr 19 18:17:24 2021
我的名字张三
张三
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包的定义 将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象称为闭包我们知道函数在Python中是第一...
    So_ProbuING阅读 273评论 0 0
  • python 装饰器!!! https://www.jb51.net/article/168276.htmhttp...
    swagsmile阅读 200评论 0 0
  • 一、什么是装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外...
    阿飞666666阅读 494评论 0 2
  • 在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过...
    愚灬墨阅读 470评论 1 1
  • 以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行...
    秋殇灬阅读 389评论 0 1