Python 函数装饰器可以通过实例属性、全局变量、非局部变量和函数属性来存储修饰函数的状态信息。
描述:
通过装饰器统计函数调用次数,并通过打印跟踪调用历史记录。
此装饰器是使用类的 call( 方法实现的。
1)装饰器返回实例对象;
2)构造函数初始化调用次数为0,并记录传入的修饰函数
3)重载调用(方法,每次调用一次计算调用次数,调用装饰器函数并打印调用信息;
4) 为返回的实例对象分配原始函数的名称
5)调用原始函数,相当于实例名(),括号运算符自动调用call(方法,从而实现统计调用次数的功能。
例
>>class counttrace:
def __init__(self,func):
self.calls=0
self.func=func
实例名()操作,自动调用调用
def __call__(self,*args):
self.calls+=1
print('调用 {}{ 次'.format(func.__name__,wrapper.calls))
return func(*args,**kargs)
定义包装函数后,将分配属性。
wrapper.calls=0
return wrapper
>counttrace
def testct(x):
print(x)
>counttrace
def testsquare(x):
print(x**2)
>testct('梯形图读取线')
调用 testct 1 次。
梯形图读取线多个装饰功能,每个功能都有一个计数器。
>testsquare(3)
调用 testsquare 1 次。
相似文章
在Python中,main函数不是语言的内置部分,而是广泛采用的编程习。它通常用于定义程序的入口点。main 函数的基本用法是在 中定义一个名为 main 的函数,并在程序末尾调用它。这种做法有助于组织 使其更加模块化 易于理解和维护。.main功能的定义和用法。在 Python 中定义 main ...
作为当今最流行的编程语言之一,Python 因其简洁 易读和强大的库功能而受到开发人员的喜爱。在 Python 的世界里,函数是一个非常重要的概念。它可以封装一块可复用的块,允许我们在需要时直接调用它,这大大提高了可复用性和可读性。今天,我们将深入探讨 python 函数的定义和调用。函数在 Pyt...
在 Python 中,str 是一个内置的字符串类型,也是一个函数。它的作用是将给定对象转换为字符串表示形式。本文详细介绍了str函数的各种用法,并通过示例演示了str函数的具体应用场景和效果。 str 函数的基本用法。str 函数是 Python 中的一个内置函数,用于将给定对象转换为字符串形式。...
你有没有浏览过网络,看到一些个性化的推荐,而没有搜索相关的关键词?事实上,这些个性化推荐中的大多数都来自浏览器 cookie。那么,计算机浏览器中的cookie到底是什么?它有什么作用?.什么是cookie?Cookie是存储在用户计算机上的小型文本文件。每当用户访问用户时,该 cookie 或 c...
在健康领域,饮食习一直是热门话题,尤其是对于慢性病患者来说,食物选择可以是良药,也可以是无形的加速器。糖尿病作为一种常见的慢性疾病,对患者的生活方式提出了严格的要求,尤其是在饮食方面。前段时间,有一个关于 瓜子是糖尿病的 加速器 吗?这个话题在退休教师陈阿姨的生活中掀起了波澜。通过探索这个问题,她不...