首页 > 编程语言 >python利用with语句分割长函数代码块的小技巧

python利用with语句分割长函数代码块的小技巧

时间:2023-11-28 23:56:38浏览次数:41  
标签:语句 __ 分割 task task1 python self time logger

如果某个函数实现很长, 有时候希望把函数分割成若干部分, 并且可以折叠, 执行时能够打印日志. 可以采用下面的办法来实现:

from mylog import logger
import time

class MyTask:
    def __init__(self,task:str) -> None:
        self.task:str = task
        self.start_time = time.time()
    def __enter__(self):
        logger.trace(f'开始执行: {self.task} ...')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        end_time = time.time()
        spend_time = round(end_time - self.start_time,2)
        if not exc_type: logger.success(f'执行完毕({spend_time}s): {self.task}')
        else: logger.error(f'执行失败({spend_time}s): {self.task}')
        return False  # 如果有异常, 继续抛出异常
    
def run():
    with MyTask('task1') as task1:
        print('task1')

    with MyTask('task2') as task1:
        print('task2')

run()

打印如下信息:
image

标签:语句,__,分割,task,task1,python,self,time,logger
From: https://www.cnblogs.com/huzhongqiang/p/17863471.html

相关文章

  • 关于Python类型注解的几个实用小技巧
    虽然python是动态类型语言,但是python3.5引入的类型注解特性却很有用.不但有助于源码阅读,而且在类型提示和代码自动补全上也很方便.但是它毕竟不是静态类型编译型语言,有一些特殊的情况,需要一些小技巧才能够处理.引用后面定义的类型由于python不是编译型语言,如果在前......
  • python变量 sys.path和import导入
    一前言:sys.path是一个重要的变量数据,在使用import导入包和模块时就会从sys.path里面去寻找包和模块二sys.path用python命令运行相关py文件或者目录时,会添加一些路径到sys.path的开头,还会添加环境变量到里面,看看官网的介绍有的时候添加的是工作目录,有的时候添加的是py文......
  • python异步迭代器和普通迭代器的区别
    正常迭代器:在Python中,我们可以通过定义__iter__和__next__方法来创建迭代器。在每次调用__next__方法时,迭代器会返回下一个值,直到没有更多的值可以返回,然后它将引发StopIteration异常。这种迭代方式是同步的,意味着每次迭代操作都会等待前一个操作完成。这种方式适合处理大量数据......
  • pyc逆向以及DASCTF里的ezpython复现
    pyc文件结构分析pyc文件是Python在解释执行源代码时生成的字节码文件,可以直接由Python虚拟机执行。重点了解了下文件头,还不太了解其他部分怎么出题。参考pythonpyc加花指令pyc文件头参考深入理解python虚拟机:pyc文件结构Python代码保护|pyc混淆从入门到工具实现mag......
  • DataFrame数据框的Python操作
    探索和清理数据听起来很无聊,而且不像训练最先进的AI模型那么酷。但如果你想成为一名专业的数据科学家,探索性数据分析和数据预处理也是必不可少的技能。幸运的是,有许多很棒的工具可以帮助您了解数据集。著名的Python数据处理模块Pandas就是其中之一。DataFrame是一个二维的表......
  • 聪明办法学python-11.27——11.29笔记打卡
    一、python中条件语句的应用总体代码结构为:ifTrue:dosomethingelse:doother简单描述为“True”为条件,当条件为真的时候,执行“dosomething”,否则就执行“doother”。例如:任务:实现一个函数,返......
  • 【Python】【OpenCV】傅里叶变换
    之前的随笔中使用了C++来编写算法底层逻辑,这次我们直接使用OpenCV和Numpy和Scipy所提供的方法直接调用实现1importcv22importnumpy3fromscipyimportndimage45kernel_3=numpy.array([6[-1,-1,-1],7[-1,8,-1],8[-1,-1,-1]9])......
  • 聪明办法学Python_task3_11.27-11.28
    聪明办法学Python_task3_11.27-11.28聪明办法学Python_task3_11.27-11.281.task05条件1.1if-else语句1.2if-else推导式1.3match-case语句2.talk01代码风格1.task05条件1.1if-else语句分为if、if-else、if-elif-elseif条件1:语句1elif条件2:......
  • 聪明办法学Python Task05&选学01
    条件CONDITIONALSif语句语法为:if条件:选择执行的语句#要有缩进,一般为四个空格“如果”条件为True,就会去执行接下来的内容。“如果”条件为False,就跳过。*注意:*1.条件后面有冒号​2.if内部的语句需要有一个统一的*缩进*,一般为四个空格,特别注......
  • python基础_05_python基础【1】
    【一】注释语法【1】什么是注释注释就是就是对代码的解释说明,注释的内容不会被当作代码运行【2】为什么要注释增强代码的可读性【3】如何使用注释代码注释分单行和多行注释1、单行注释用#号,可以跟在代码的正上方或者正后方#这是一段通过“#+注释内容”创造的......