亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、前言

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

二、正文

第一種方法:

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

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('我被調用了')

test()
print(f'我被調用了{test.count}次')

如果是統(tǒng)計class中的函數(shù)被調用的次數(shù),就把 裝飾器 裝在被調用函數(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('我被調用了')

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

print(f'我被調用了{Test.test.count}次')

如果你的class中有很多的self用來調用函數(shù),那么可能會報錯,提示self無xxx屬性or函數(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

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

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

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

第3.1種方法(超簡單)

calls = 0

def f():
? ? global calls?
? ? calls ?+= 1
? ? # do your func stuff here
? ??
## 如果想統(tǒng)計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

# 調用方式
# Test().f()

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

三、小結

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

相關文章

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

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

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

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

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

    Python寫一個簡單的在線編輯器

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

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

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

    機器學習之KNN算法原理及Python實現(xiàn)方法詳解

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

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

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

    python 搜索大文件的實例代碼

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

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

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

    Python寫了個疫情信息快速查看工具實例代碼

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

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

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

最新評論