最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python統(tǒng)計(jì)函數(shù)被調(diào)用次數(shù)的實(shí)現(xiàn)

 更新時(shí)間:2023年02月10日 08:26:30   作者:整天夢(mèng)游的小jerry  
本文主要介紹了python如何統(tǒng)計(jì)函數(shù)被調(diào)用次數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、前言

每當(dāng)做搜索任務(wù)或者時(shí)間復(fù)雜度任務(wù)相關(guān)時(shí)候,就會(huì)有統(tǒng)計(jì)函數(shù)被調(diào)用次數(shù)的需求。通常我們的做法是在函數(shù)前面定義一個(gè)變量,每循環(huán)調(diào)用一次,變量就加一,這不失為一種辦法,那么有沒有更高效的方法呢?

二、正文

第一種方法:

當(dāng)然有,那就是python的獨(dú)家專屬操作—> 裝飾器。
廢話不多說,直接上例子:

class CallingCounter(object):
? ? def __init__ (self, func):
? ? ? ? self.func = func
? ? ? ? self.count = 0

? ? def __call__ (self, *args, **kwargs):
? ? ? ? self.count += 1
? ? ? ? return self.func(*args, **kwargs)

@CallingCounter
def test():
? ? print('我被調(diào)用了')

test()
print(f'我被調(diào)用了{(lán)test.count}次')

如果是統(tǒng)計(jì)class中的函數(shù)被調(diào)用的次數(shù),就把 裝飾器 裝在被調(diào)用函數(shù)的前面即可。

class CallingCounter(object):
? ? def __init__ (self, func):
? ? ? ? self.func = func
? ? ? ? self.count = 0

? ? def __call__ (self, *args, **kwargs):
? ? ? ? self.count += 1
? ? ? ? return self.func(*args, **kwargs)

class Test:
? ? @CallingCounter
? ? def test():
? ? ? ? print('我被調(diào)用了')

for i in range(10):
? ? Test.test()

print(f'我被調(diào)用了{(lán)Test.test.count}次')

如果你的class中有很多的self用來調(diào)用函數(shù),那么可能會(huì)報(bào)錯(cuò),提示self無xxx屬性or函數(shù)。這時(shí)候就要看第二種方法

第二種方法:

def call_counter(func):
? ? def helper(*args, **kwargs):
? ? ? ? helper.calls += 1
? ? ? ? return func(*args, **kwargs)
? ? helper.calls = 0
? ? helper.__name__= func.__name__
? ? return helper
? ??
# 下面是使用裝飾器
@call_counter
def f():
? ? pass
print(f.calls)

for _ in range(10):
? ? f()
print(f.calls)
# 0 10

# 這里是另一種調(diào)用方式
def f():
? ? pass
f = call_counter(f)
print(f.calls)

for _ in range(10):
? ? f()
print(f.calls)
# 0 10

上面兩種方法筆者都親自做了測(cè)試,下面再介紹3個(gè)超簡單的(狗頭保命)

第3.1種方法(超簡單)

calls = 0

def f():
? ? global calls?
? ? calls ?+= 1
? ? # do your func stuff here
? ??
## 如果想統(tǒng)計(jì)class中的函數(shù)使用次數(shù),同理

第3.2種方法(超簡單)

class Test(object):
    def __init__(self):
        self.calls = 0
    def f(self):
        self.calls += 1
        # do your func stuff here

第3.3種方法(超簡單)

class Test(object):
? ? calls = 0
? ? def __init__(self):
? ? ? ? pass
? ? def f(self):
? ? ? ? Test.calls += 1
? ? ? ? # do your func stuff here

# 調(diào)用方式
# Test().f()

A = Test()
for i in range(10):
? ? A.f()
print(A.calls)
print(Test().calls)
print(Test.calls)

三、小結(jié)

到此這篇關(guān)于python如何統(tǒng)計(jì)函數(shù)被調(diào)用次數(shù)的文章就介紹到這了,更多相關(guān)python統(tǒng)計(jì)函數(shù)被調(diào)用次數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django+Xadmin構(gòu)建項(xiàng)目的方法步驟

    Django+Xadmin構(gòu)建項(xiàng)目的方法步驟

    這篇文章主要介紹了Django+Xadmin構(gòu)建項(xiàng)目的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Python logging日志庫空間不足問題解決

    Python logging日志庫空間不足問題解決

    這篇文章主要介紹了Python logging日志庫空間不足問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python爬蟲爬取ts碎片視頻+驗(yàn)證碼登錄功能

    Python爬蟲爬取ts碎片視頻+驗(yàn)證碼登錄功能

    這篇文章主要介紹了Python爬蟲爬取ts碎片視頻+驗(yàn)證碼登錄功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 使用Python請(qǐng)求http/https時(shí)如何設(shè)置失敗重試次數(shù)

    使用Python請(qǐng)求http/https時(shí)如何設(shè)置失敗重試次數(shù)

    這篇文章主要介紹了使用Python請(qǐng)求http/https時(shí)如何設(shè)置失敗重試次數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python Pandas 刪除列操作

    Python Pandas 刪除列操作

    這篇文章主要介紹了Python Pandas 刪除列操作,主要操作使用del和drop方法刪除DataFrame中的列,使用drop方法一次刪除多列,需要的朋友可以參考一下
    2022-03-03
  • python中time、datetime模塊的使用

    python中time、datetime模塊的使用

    這篇文章主要介紹了python中time、datetime模塊的使用,幫助大家更好的利用python處理時(shí)間,感興趣的朋友可以了解下
    2020-12-12
  • 10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題

    10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題

    今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識(shí)循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語言編寫,非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-02-02
  • PyQt5+QtChart實(shí)現(xiàn)繪制區(qū)域圖

    PyQt5+QtChart實(shí)現(xiàn)繪制區(qū)域圖

    QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)區(qū)域圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • Python try except異常捕獲機(jī)制原理解析

    Python try except異常捕獲機(jī)制原理解析

    這篇文章主要介紹了Python try except異常捕獲機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python實(shí)現(xiàn)簡單http服務(wù)器功能

    python實(shí)現(xiàn)簡單http服務(wù)器功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單http服務(wù)器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評(píng)論

万州区| 四子王旗| 岳池县| 肥乡县| 黔南| 闽侯县| 扎鲁特旗| 安溪县| 巴东县| 醴陵市| 洮南市| 濮阳县| 诸城市| 崇仁县| 即墨市| 界首市| 托克托县| 灌南县| 鄂温| 措美县| 英山县| 肥乡县| 大英县| 闽清县| 贵定县| 紫金县| 垣曲县| 新晃| 周口市| 固原市| 商水县| 西乌| 吴江市| 丹巴县| 昌平区| 景洪市| 正宁县| 宁明县| 龙胜| 白城市| 明光市|