如何测试调用函数的次数

时间:2014-05-04 00:24:55

标签: python function

让我们说我有一些代码可以无限运行这样的函数:

def funct():
    print "Hello"

while True:
    funct()

有没有办法我可以测试调用该函数的次数(没有使用尝试除了 >递归错误)然后执行更多代码?

2 个答案:

答案 0 :(得分:3)

定义函数的函数属性,并在每次调用时对其进行碰撞。

def funct():
    funct.callCount += 1
    print "Hello"
funct.callCount = 0

答案 1 :(得分:1)

稍微详细的方法是使用自定义装饰器来注册函数调用。

在下面的示例中,创建了一个Counter类,其中包含一个类属性字典,其中包含有关每个函数调用频率的信息

class Counter(object):
    counts = {}

    @staticmethod
    def count(func):
        def wrapped(*args,**kwargs):
            if func.__name__ in Counter.counts.keys():
                Counter.counts[func.__name__] += 1
            else:
                Counter.counts[func.__name__] = 1
            return func(*args,**kwargs)
        return wrapped

@Counter.count
def test():
    pass

@Counter.count
def test2():
    test()

@Counter.count
def test3():
    test()
    test2()

for _ in range(4):
    test3()
    test2()
    test()

print Counter.counts

这将输出:

{'test': 16, 'test3': 4, 'test2': 8}