每日一题 【每日一题】定义一个带参数的装饰器 -Python-20210904

Jack · 2021年09月04日 · 最后由 lework 回复于 2021年12月22日 · 82 次阅读
本帖已被设为精华帖!

定义一个带参数的装饰器

Jack 将本帖设为了精华贴 09月04日 21:21

参考代码:

from functools import wraps
import logging
def logged(level, name = None, message = None):
    def decorate(func):
        log_name = name if name else func.__module__
        log = logging.getLogger(log_name)
        log_msg = message if message else func.__name__

        @wraps(func)
        def wrapper(*args, **kwargs):
            log.log(level, log_msg)
            return func(*args, **kwargs)
        return wrapper
    return decorate
package main

import (
    "fmt"
    "time"
)


// 装饰器函数,在特定的函数执行前后,添加执行时间
func log(wrapper func(string), arg string) {
    fmt.Printf("StartTime: %v\n",time.Now())
    wrapper(arg)
    fmt.Printf("EndtTime: %v\n",time.Now())
}

// 定义函数
func my(name string)  {
    fmt.Printf("hi! %s\n", name)
}

func main() {
    /*
    定义一个带参数的装饰器
    */

    log(my, "张三")
}

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册