欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python借助with語(yǔ)句實(shí)現(xiàn)代碼段只執(zhí)行有限次

 更新時(shí)間:2022年03月23日 11:00:38   作者:SDFDSJFJ  
這篇文章主要介紹了Python借助with語(yǔ)句實(shí)現(xiàn)代碼段只執(zhí)行有限次,首先要定義一個(gè)能夠在with語(yǔ)句中使用的類實(shí)現(xiàn)enter和exit,下文詳細(xì)介紹需要的小伙伴可以參考一下

debug的時(shí)候,有時(shí)希望打印某些東西,但是如果代碼段剛好在一個(gè)循環(huán)或者是其他會(huì)被執(zhí)行很多次的部分,那么用來(lái)print的語(yǔ)句也會(huì)被執(zhí)行很多次,看起來(lái)就不美觀。

例如:

a = 0
for i in range(3):
? ? a += 1
print(a)

這里在中間希望確認(rèn)一下a的類型,debug的時(shí)候改成:

a = 0
for i in range(3):
? ? print(type(a))
? ? a += 1
print(a)
''' 打印結(jié)果:
<class 'int'>
<class 'int'>
<class 'int'>
3
'''

有3個(gè) <class ‘int’>,很不好看。

為了解決這個(gè)問(wèn)題,可以借助with語(yǔ)句實(shí)現(xiàn),首先要定義一個(gè)能夠在with語(yǔ)句中使用的類(實(shí)現(xiàn)了__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是標(biāo)簽,相同標(biāo)簽共用執(zhí)行次數(shù)計(jì)數(shù)器;limit是限制執(zhí)行的次數(shù)。例子如下:

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)

打印結(jié)果:

<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)

 打印結(jié)果:(相同tag共用了計(jì)數(shù)器,因此總共只會(huì)執(zhí)行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)

打印結(jié)果:(不同tag不共用計(jì)數(shù)器)

1 <class 'int'>
1 <class 'int'>
1 <class 'int'>
2 <class 'int'>
2 <class 'int'>
2 <class 'int'>
6

到此這篇關(guān)于Python借助with語(yǔ)句實(shí)現(xiàn)代碼段只執(zhí)行有限次的文章就介紹到這了,更多相關(guān)Python代碼段執(zhí)行有限次內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python要安裝在哪個(gè)盤(pán)

    python要安裝在哪個(gè)盤(pán)

    在本篇文章里小編給大家分享的是一篇關(guān)于python必須裝在c盤(pán)嗎的知識(shí)點(diǎn)文章,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Scrapy項(xiàng)目實(shí)戰(zhàn)之爬取某社區(qū)用戶詳情

    Scrapy項(xiàng)目實(shí)戰(zhàn)之爬取某社區(qū)用戶詳情

    這篇文章主要介紹了Scrapy項(xiàng)目實(shí)戰(zhàn)之爬取某社區(qū)用戶詳情,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python+influxdb+shell編寫(xiě)區(qū)域網(wǎng)絡(luò)狀況表

    python+influxdb+shell編寫(xiě)區(qū)域網(wǎng)絡(luò)狀況表

    這篇文章主要為大家詳細(xì)介紹了python+influxdb+shell編寫(xiě)區(qū)域網(wǎng)絡(luò)狀況表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python實(shí)現(xiàn)的RSS閱讀器實(shí)例

    Python實(shí)現(xiàn)的RSS閱讀器實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)的RSS閱讀器,實(shí)例分析了XML解析實(shí)現(xiàn)RSS閱讀的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python及Django框架生成二維碼的方法分析

    Python及Django框架生成二維碼的方法分析

    這篇文章主要介紹了Python及Django框架生成二維碼的方法,結(jié)合實(shí)例形式分析了Python及Django框架使用qrcode包實(shí)現(xiàn)二維碼生成功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 跟老齊學(xué)Python之復(fù)習(xí)if語(yǔ)句

    跟老齊學(xué)Python之復(fù)習(xí)if語(yǔ)句

    是否記得,在上一部分,有一講專門介紹if語(yǔ)句的:從if開(kāi)始語(yǔ)句的征程。在學(xué)習(xí)if語(yǔ)句的時(shí)候,對(duì)python編程的基礎(chǔ)知識(shí)了解的還不是很多,或許沒(méi)有做什么太復(fù)雜的東西。本講要對(duì)它進(jìn)行一番復(fù)習(xí),通過(guò)復(fù)習(xí)提高一下。如果此前有的東西忘記了,建議首先回頭看看前面那講。
    2014-10-10
  • Python實(shí)現(xiàn)隨機(jī)生成手機(jī)號(hào)及正則驗(yàn)證手機(jī)號(hào)的方法

    Python實(shí)現(xiàn)隨機(jī)生成手機(jī)號(hào)及正則驗(yàn)證手機(jī)號(hào)的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)隨機(jī)生成手機(jī)號(hào)及正則驗(yàn)證手機(jī)號(hào)的方法,涉及Python基于random模塊的隨機(jī)數(shù)以及基于re模塊的正則驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • 用python畫(huà)個(gè)奧運(yùn)五環(huán)(附完整代碼)

    用python畫(huà)個(gè)奧運(yùn)五環(huán)(附完整代碼)

    大家好,本篇文章主要講的是用python畫(huà)個(gè)奧運(yùn)五環(huán)(附完整代碼),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • numpy和tensorflow中的各種乘法(點(diǎn)乘和矩陣乘)

    numpy和tensorflow中的各種乘法(點(diǎn)乘和矩陣乘)

    這篇文章主要介紹了numpy和tensorflow中的各種乘法(點(diǎn)乘和矩陣乘),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python使用MkDocs自動(dòng)生成文檔的操作方法

    python使用MkDocs自動(dòng)生成文檔的操作方法

    python代碼注釋風(fēng)格有很多,比較主流的有 reStructuredText風(fēng)格、numpy風(fēng)格、Google風(fēng)格,自動(dòng)生成文檔的工具也有很多,常見(jiàn)的有:Pydocs,Sphinx和MkDocs,本文給大家介紹了python使用MkDocs自動(dòng)生成文檔的操作方法,需要的朋友可以參考下
    2024-06-06

最新評(píng)論