最新国产好看的视频,伊人天堂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ù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)用一次,變量就加一,這不失為一種辦法,那么有沒(méi)有更高效的方法呢?

二、正文

第一種方法:

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

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用來(lái)調(diào)用函數(shù),那么可能會(huì)報(bào)錯(cuò),提示self無(wú)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è)超簡(jiǎn)單的(狗頭保命)

第3.1種方法(超簡(jiǎn)單)

calls = 0

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

第3.2種方法(超簡(jiǎn)單)

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

第3.3種方法(超簡(jiǎn)單)

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)目的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Python logging日志庫(kù)空間不足問(wèn)題解決

    Python logging日志庫(kù)空間不足問(wèn)題解決

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

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

    這篇文章主要介紹了Python爬蟲(chóng)爬取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ù)問(wèn)題,具有很好的參考價(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)與遞歸問(wèn)題

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

    今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識(shí)循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語(yǔ)言編寫(xiě),非常不錯(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ī)制原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python實(shí)現(xiàn)簡(jiǎn)單http服務(wù)器功能

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

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

最新評(píng)論

尼勒克县| 同江市| 武义县| 行唐县| 崇左市| 登封市| 沾益县| 金坛市| 连江县| 江都市| 南陵县| 阿克陶县| 遂宁市| 沙坪坝区| 福安市| 开远市| 闽清县| 疏附县| 台江县| 长武县| 林西县| 武汉市| 安多县| 凤凰县| 广西| 竹北市| 辉县市| 略阳县| 南郑县| 秦安县| 张家港市| 武安市| 七台河市| 华安县| 信阳市| 昌图县| 逊克县| 庆城县| 溆浦县| 昌吉市| 云阳县|