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

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è)超簡(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)文章

  • 一文教你用python編寫Dijkstra算法進(jìn)行機(jī)器人路徑規(guī)劃

    一文教你用python編寫Dijkstra算法進(jìn)行機(jī)器人路徑規(guī)劃

    迪杰斯特拉(Dijkstra)算法是典型最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他節(jié)點(diǎn)的最短路徑,這篇文章主要給大家介紹了關(guān)于利用python編寫Dijkstra算法進(jìn)行機(jī)器人路徑規(guī)劃的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 利用信號(hào)如何監(jiān)控Django模型對(duì)象字段值的變化詳解

    利用信號(hào)如何監(jiān)控Django模型對(duì)象字段值的變化詳解

    這篇文章主要給大家介紹了關(guān)于利用信號(hào)如何監(jiān)控Django模型對(duì)象字段值變化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Python寫一個(gè)簡(jiǎn)單的在線編輯器

    Python寫一個(gè)簡(jiǎn)單的在線編輯器

    這篇文章主要介紹了如何利用Python寫一個(gè)簡(jiǎn)單的在線編輯器,主要通過pywebio程序,實(shí)現(xiàn)了Python的簡(jiǎn)陋在線編輯器,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-02-02
  • Pandas多個(gè)條件(AND,OR,NOT)中提取行

    Pandas多個(gè)條件(AND,OR,NOT)中提取行

    本文主要介紹了Pandas多個(gè)條件(AND,OR,NOT)中提取行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解

    機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了機(jī)器學(xué)習(xí)KNN算法原理以及Python相關(guān)實(shí)現(xiàn)步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • django實(shí)現(xiàn)登錄時(shí)候輸入密碼錯(cuò)誤5次鎖定用戶十分鐘

    django實(shí)現(xiàn)登錄時(shí)候輸入密碼錯(cuò)誤5次鎖定用戶十分鐘

    這篇文章主要介紹了django實(shí)現(xiàn)登錄時(shí)候輸入密碼錯(cuò)誤5次鎖定用戶十分鐘,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • python 搜索大文件的實(shí)例代碼

    python 搜索大文件的實(shí)例代碼

    今天小編就為大家分享一篇python 搜索大文件的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python中使用正則表達(dá)式的后向搜索肯定模式(推薦)

    python中使用正則表達(dá)式的后向搜索肯定模式(推薦)

    這篇文章主要介紹了python里使用正則表達(dá)式的后向搜索肯定模式,本文通過代碼介紹的非常詳細(xì),包括語法介紹,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • Python寫了個(gè)疫情信息快速查看工具實(shí)例代碼

    Python寫了個(gè)疫情信息快速查看工具實(shí)例代碼

    本次使用PyQt5開發(fā)了一款疫情信息快速查看工具,實(shí)現(xiàn)了多個(gè)數(shù)據(jù)源的查看,代碼量不大,功能相當(dāng)于瀏覽器,只是限定了一些特定網(wǎng)址,這篇文章主要介紹了Python寫了個(gè)疫情信息快速查看工具,需要的朋友可以參考下
    2022-11-11
  • Python操作mongodb數(shù)據(jù)庫進(jìn)行模糊查詢操作示例

    Python操作mongodb數(shù)據(jù)庫進(jìn)行模糊查詢操作示例

    這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫進(jìn)行模糊查詢操作,結(jié)合實(shí)例形式分析了Python連接MongoDB數(shù)據(jù)庫及使用正則表達(dá)式進(jìn)行模糊查詢的相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06

最新評(píng)論