首页 > 编程语言 >python 带参数的装饰器

python 带参数的装饰器

时间:2024-09-05 10:51:19浏览次数:13  
标签:return log python 参数 func logfile was 装饰 def

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)
            # 打开logfile,并写入内容
            with open(logfile, 'a') as opened_file:
                # 现在将日志打到指定的logfile
                opened_file.write(log_string + '\n')
            return func(*args, **kwargs)
        return wrapped_function
    return logging_decorator
 
@logit()
def myfunc1():
    pass
 
myfunc1()
# Output: myfunc1 was called
# 现在一个叫做 out.log 的文件出现了,里面的内容就是上面的字符串
 
@logit(logfile='func2.log')
def myfunc2():
    pass
 
myfunc2()
# Output: myfunc2 was called
# 现在一个叫做 func2.log 的文件出现了,里面的内容就是上面的字符串

  

标签:return,log,python,参数,func,logfile,was,装饰,def
From: https://www.cnblogs.com/boye169/p/18397922

相关文章

  • python 装饰器类
    fromfunctoolsimportwrapsclasslogit(object):def__init__(self,logfile='out.log'):self.logfile=logfiledef__call__(self,func):@wraps(func)defwrapped_function(*args,**kwargs):log_stri......
  • 多个装饰器修改一个函数
    defoutter_1(func1):definner_1(*args,**kwargs):#使用不定长参数print("inner_1内容")func1(*args,**kwargs)print("第一个装饰器-----1")returninner_1defoutter_2(func2):definner_2(*args,**kwargs):......
  • 优化采样参数提升大语言模型响应质量:深入分析温度、top_p、top_k和min_p的随机解码策
    当向大语言模型(LLM)提出查询时,模型会为其词汇表中的每个可能标记输出概率值。从这个概率分布中采样一个标记后,我们可以将该标记附加到输入提示中,使LLM能够继续输出下一个标记的概率。这个采样过程可以通过诸如temperature和top_p等参数进行精确控制。但是你是否曾深入思......
  • 用Python实现时间序列模型实战——Day 11: 指数平滑模型
    一、学习内容1.简单指数平滑法简单指数平滑法:简单指数平滑法(SimpleExponentialSmoothing,SES)是一种用于平滑时间序列数据的技术,通过对数据赋予不同的指数权重,较新的数据点权重更高。SES适用于平稳的时间序列数据,即没有显著趋势和季节性成分的时间序列。SES模型的......
  • windows系统Redis安装,启动与客户端连接,redis-python模块安装
    1、https://www.cnblogs.com/chunyouqudongwuyuan/p/16475220.html#redis%E5%9F%BA%E6%9C%AC%E8%BF%9E%E6%8E%A5Redis安装,启动与客户端连接,redis-python模块安装redis安装由于windows对redis支持不好,所以在windows下只能使用较老版本的redis只维护到3.x https://github.c......
  • Python使用sqlite数据库快速创建库和表
    一、安装SQLite1、下载sqliteSQLiteDownloadPage2、解压安装包3、设置环境变量二、快速创建库和表的代码importsqlite3importos#数据库文件名db_name='StarVerification.db'new_db_name_base='StarVerification_old.db'new_db_name=new_db_name_b......
  • 最全面教程!在 R 语言中使用 python 与 conda(reticulate包)
    reticulate是一个在R语言中访问Python的强大工具。它允许R用户直接调用Pytho中的代码、函数和模块,以及在R环境中与Python进行无缝交互。reticulate的主要功能包括:调用Python:reticulate允许用户在R中直接调用Python代码和函数。无论是在RMarkdown文档中、源Python脚......
  • 12 Python面向对象编程:运算符重载
    本篇是Python系列教程第12篇,更多内容敬请访问我的Python合集在理解运算符重载之前我们已经知道了什么是方法重载,方法重载就是子类继承父类并且定义了一个和父类一样的方法。知道了什么是重载,也知道了什么是运算符(加减乘除等),那么运算符重载也很好理解了,其实就是在......
  • 13 Python面向对象编程:装饰器
    本篇是Python系列教程第13篇,更多内容敬请访问我的Python合集Python装饰器是一种强大的工具,用于修改或增强函数或方法的行为,而无需更改其源代码。装饰器本质上是一个接收函数作为参数的函数,并返回一个新的函数。装饰器的用途包括日志记录、性能测试、事务处理、缓......
  • 12 Python面向对象编程:运算符重载
    本篇是Python系列教程第12篇,更多内容敬请访问我的Python合集在理解运算符重载之前我们已经知道了什么是方法重载,方法重载就是子类继承父类并且定义了一个和父类一样的方法。知道了什么是重载,也知道了什么是运算符(加减乘除等),那么运算符重载也很好理解了,其实就是在类里面......