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

Python借助with語句實現代碼段只執(zhí)行有限次

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

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

例如:

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是標簽,相同標簽共用執(zhí)行次數計數器;limit是限制執(zhí)行的次數。例子如下:

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共用了計數器,因此總共只會執(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)

打印結果:(不同tag不共用計數器)

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

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

相關文章

  • python要安裝在哪個盤

    python要安裝在哪個盤

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

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

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

    python+influxdb+shell編寫區(qū)域網絡狀況表

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

    Python實現的RSS閱讀器實例

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

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

    這篇文章主要介紹了Python及Django框架生成二維碼的方法,結合實例形式分析了Python及Django框架使用qrcode包實現二維碼生成功能的相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • 跟老齊學Python之復習if語句

    跟老齊學Python之復習if語句

    是否記得,在上一部分,有一講專門介紹if語句的:從if開始語句的征程。在學習if語句的時候,對python編程的基礎知識了解的還不是很多,或許沒有做什么太復雜的東西。本講要對它進行一番復習,通過復習提高一下。如果此前有的東西忘記了,建議首先回頭看看前面那講。
    2014-10-10
  • Python實現隨機生成手機號及正則驗證手機號的方法

    Python實現隨機生成手機號及正則驗證手機號的方法

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

    用python畫個奧運五環(huán)(附完整代碼)

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

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

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

    python使用MkDocs自動生成文檔的操作方法

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

最新評論