美文网首页
Python装饰器11-装饰器函数使用参数

Python装饰器11-装饰器函数使用参数

作者: dnsir | 来源:发表于2019-06-15 11:59 被阅读0次

有些场景要求装饰器函数也有参数

示例:

#! -*- coding: utf-8 -*-
"""
在函数中嵌入装饰器
"""
from functools import wraps
def logit(logfile = 'out.log'):
    # 永远记得从这个函数开始
    def logging_decorator(func):
        # 注意的是为什么这儿
        @wraps(func)
        def wrapped_function(*args, **kwargs):
            log_string = func.__name__ + " was called"
            print(log_string)
            with open(logfile, 'a') as opened_file:
                opened_file.write(log_string + '\n')
            return func(*args, **kwargs)
        return wrapped_function
    return logging_decorator

# 注意不是@logit
# logit() 返回的是logging_decorator,语法糖含义更深了
# 特别关注的这里是logit()而不是之前普通的logit。
@logit()
def myfunc1():
    pass

myfunc1()

@logit(logfile = 'func2.log')
def myfunc2():
     pass

 myfunc2()

小结

在业务开发中极少数场景需要装饰器函数也携带参数,理解装饰器的意义就可以轻松理解这种语法。

相关文章

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • python装饰器2018-11-19

    装饰器也是个函数 装饰器有参数,参数是函数 装饰器有内嵌函数 装饰器有返回值,返回值是内嵌函数 装饰器使用时直接挂...

  • Python装饰器11-装饰器函数使用参数

    有些场景要求装饰器函数也有参数 示例: 小结 在业务开发中极少数场景需要装饰器函数也携带参数,理解装饰器的意义就可...

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • python 装饰器

    python 装饰器 描述 python 中一切皆对象,函数也可以当作参数传递 装饰器就是接受一个函数作为参数,添...

  • 装饰器的使用

    函数带多个参数 普通的装饰器, 打印函数的运行时间 装饰器带有多个参数当装饰器带有多个参数的时候, 装饰器函数就需...

  • 装饰器实验

    装饰器实验 说明 ts内包含了四个装饰器,类装饰器、属性装饰器、函数装饰器、参数装饰器,本文中测试一下其的使用。 ...

  • Python - 学习理解带参数的装饰器

    理解带参数的装饰器 参考文章 Python精进-装饰器与函数对象 加了装饰器这段代码从一个函数定义(不会执行任何东...

  • Python装饰器之多重装饰器

    多重装饰器 ​众所周知,使用装饰器装饰一个函数时,装饰器会将原函数当做一个参数,传进装饰器函数中,然后返回一个新的...

  • 二十:Python之多个装饰器装饰

    一:装饰顺序 从离函数最近装饰器开始装饰 二:装饰不带参数的函数 三:装饰固定参数 四:装饰不固定参数 五:通用装饰器

网友评论

      本文标题:Python装饰器11-装饰器函数使用参数

      本文链接:https://www.haomeiwen.com/subject/lsfbfctx.html