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) """ 打印结果:3 """
有3个
为了解决这个问题,可以借助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)
打印结果:
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
1
1
2
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
1
1
2
2
2
6
到此这篇关于Python借助with语句实现代码段只执行有限次的文章就介绍到这了,更多相关Python代码段执行有限次内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?