程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

学习14.总结# 装饰器

发布于2019-08-06 10:12     阅读(1156)     评论(0)     点赞(1)     收藏(2)


装饰器

装饰器 作用在不修改源码及调用方式前提下额外增加一些功能
开放封闭原则

函数嵌套

def func():
    def foo():
        print(1)
    return foo
func()()

闭包

def func(a):
    def foo():
        print(a)
    return foo
func(1)()

low版装饰器

def func(a):
    def foo():
        print(a)
    return foo


def f1():
    print("这是一个f1")

f1 = func(f1)
f1()

被装饰得函数能够接受参数

def func(a):
    def foo(*args,**kwargs):
        a(*args,**kwargs)

    return foo

def f1(*args,**kwargs):
    print(f"这是一个{args}")

f1 = func(f1)
f1(1,2,3,34,4,5)

高级

def func(a):
    def foo(*args,**kwargs):
        a(*args,**kwargs)

    return foo

@func
def f1(*args,**kwargs):
    print(f"这是一个{args}")

f1(1,2,3,34,4,5)

被装饰得函数返回值

def func(a):
    def foo(*args,**kwargs):
        ret = a(*args,**kwargs)
        return ret
    return foo

@func
def f1(*args,**kwargs):
    print(f"这是一个{args}")
    return "我可以返回了"
f1(1,2,3,34,4,5)

标准版 装饰器

def func(a):  # a是要被装饰的函数名
    def foo(*args, **kwargs):
        "装饰之前的操作"
        ret = a(*args, **kwargs)
        "装饰之后的操作"
        return ret

    return foo


@func
def f1(*args, **kwargs):
    print(f"这是一个{args}")
    return "我可以返回了"


f1(1, 2, 3, 34, 4, 5)


所属网站分类: 技术文章 > 博客

作者:343489399

链接:https://www.pythonheidong.com/blog/article/7506/683a417746099d4f34e0/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)