Python借助with语句实现代码段只执行有限次
作者:SDFDSJFJ 发布时间:2022-08-07 15:52:29
标签:Python,with,语句,代码,执行,有限次
debug的时候,有时希望打印某些东西,但是如果代码段刚好在一个循环或者是其他会被执行很多次的部分,那么用来print的语句也会被执行很多次,看起来就不美观。
例如:
a = 0
for i in range(3):
a += 1
print(a)
这里在中间希望确认一下a的类型,debug的时候改成:
a = 0
for i in range(3):
print(type(a))
a += 1
print(a)
''' 打印结果:
<class 'int'>
<class 'int'>
<class 'int'>
3
'''
有3个 <class ‘int’>,很不好看。
为了解决这个问题,可以借助with
语句实现,首先要定义一个能够在with语句中使用的类(实现了__enter__和__exit__):
from typing import Any
class LimitedRun(object):
run_dict = {}
def __init__(self,
tag: Any = 'default',
limit: int = 1):
self.tag = tag
self.limit = limit
def __enter__(self):
if self.tag in LimitedRun.run_dict.keys():
LimitedRun.run_dict[self.tag] += 1
else:
LimitedRun.run_dict[self.tag] = 1
return LimitedRun.run_dict[self.tag] <= self.limit
def __exit__(self, exc_type, exc_value, traceback):
return
tag是标签,相同标签共用执行次数计数器;limit是限制执行的次数。例子如下:
a = 0
for i in range(3):
with LimitedRun('print_1', 1) as limited_run:
if limited_run:
print(type(a))
a += 1
print(a)
打印结果:
<class 'int'>
3
a = 0
for i in range(3):
with LimitedRun('print_1', 4) as limited_run:
if limited_run:
print(1, type(a))
a += 1
for i in range(3):
with LimitedRun('print_1', 4) as limited_run:
if limited_run:
print(2, type(a))
a += 1
print(a)
打印结果:(相同tag共用了计数器,因此总共只会执行4次)
1 <class 'int'>
1 <class 'int'>
1 <class 'int'>
2 <class 'int'>
6
a = 0
for i in range(3):
with LimitedRun('print_1', 4) as limited_run:
if limited_run:
print(1, type(a))
a += 1
for i in range(3):
with LimitedRun('print_2', 4) as limited_run:
if limited_run:
print(2, type(a))
a += 1
print(a)
打印结果:(不同tag不共用计数器)
1 <class 'int'>
1 <class 'int'>
1 <class 'int'>
2 <class 'int'>
2 <class 'int'>
2 <class 'int'>
6
来源:https://blog.csdn.net/qq_44980390/article/details/123673310
0
投稿
猜你喜欢
- 今天写了一个放迅雷焦点广告的效果,还请大家多多指正,先附上效果图一张:相关文章:迅雷首页新闻图片轮播效果js源码首先是JS代码部分,之前一定
- 比如说点的是图片的左边,还是右边,上边还是下边?点击图片左右显示上下张,我怎么知道?这样就可以做出像QQ空间那样,打开上一个图片和下一个图片
- 格式请使用 gif 或 jpg 或swf (flash)同一组广告请使用一种格式。命名命名方式:宽x高.图片格式x 必须小写 ; 图片格式
- 用ASP代码实现对access数据库的在线压缩处理,注意压缩前请备份数据库。我们知道每个一段时间压缩一下access数据库,可以减少数据库的
- Introduction简介So what is POSH? No, it's not just some new clothing
- 如果在 Access 数据库中删除数据或对象,或者在 Access 项目中删除对象,Access 数据库或 Access 项目可能会产生碎片
- 关于数据库的逻辑设计,是一个很广泛的问题。本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以
- 一、算术运算符运算符+-*/%**(幂)求次方//(取整除,向下取整)如:9//2 =4二、比较运算符运算符==!=<>(不等于
- 那么在集合函数中它有什么用呢 ?假设数据库有一张表名为student的表。如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省
- 本文实例讲述了python基于BeautifulSoup实现抓取网页指定内容的方法。分享给大家供大家参考。具体实现方法如下:# _*_ co
- 听到一些人说现在做产品设计很没有成就感。没有什么创造力,除了抄袭模仿(称之为竞争分析)、千篇一律(又称规范标准)还有复杂的流程、粗制滥造的表
- 继续上一篇,针对Bootstrap Metronic菜单栏整理的笔记分享给大家,供大家参考,具体内容如下1.简介1) .环境配置
- 本文实例讲述了Python面向对象程序设计之类和对象、实例变量、类变量用法。分享给大家供大家参考,具体如下:类和对象:类的定义:用来描述具有
- 本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下KNN分类算法应该算得上是机器学习中最简单的分类算法了,
- 1. torch- torchvision- python版本对应关系2. CUDA Toolkit 和PyTorch的对应关系3. 安装说
- 你不可能随时备份数据,但你的数据丢失时,或者数据库目录中的文件损坏时, 你只能恢复已经备份的文件,而在这之后的插入或更新的数据,就无能为力了
- 1. Python的数据类型上一遍博文已经详细地介绍了Python的数据类型,详见链接Python的变量命名及数据类型。在这里总结一下Pyt
- prototype框架最早是出于方便Ruby开发人员进行JavaScript开发所构建的,从这个版本上更加体现的淋漓尽致。比起1.3.1版本
- 单测框架的作用测试发现:从多个文件中寻找测试用例。测试执行:按照一定顺序去执行并且生成结果。测试断言:判断最终结果与实际结果的差异。测试报告
- 作为一个新手,你需要以下3个步骤:1、用户注册 > 2、获取token > 3、调取数据数据内容:包含股票、基金、期货、债券、外