Python 函数装饰器保存信息

小夏 科技 更新 2024-01-29

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 函数的用法

    在Python中,main函数不是语言的内置部分,而是广泛采用的编程习。它通常用于定义程序的入口点。main 函数的基本用法是在 中定义一个名为 main 的函数,并在程序末尾调用它。这种做法有助于组织 使其更加模块化 易于理解和维护。.main功能的定义和用法。在 Python 中定义 main ...

    Python函数定义调用与实战

    作为当今最流行的编程语言之一,Python 因其简洁 易读和强大的库功能而受到开发人员的喜爱。在 Python 的世界里,函数是一个非常重要的概念。它可以封装一块可复用的块,允许我们在需要时直接调用它,这大大提高了可复用性和可读性。今天,我们将深入探讨 python 函数的定义和调用。函数在 Pyt...

    本节详细介绍了如何在 Python 中使用 str 函数以及如何使用它

    在 Python 中,str 是一个内置的字符串类型,也是一个函数。它的作用是将给定对象转换为字符串表示形式。本文详细介绍了str函数的各种用法,并通过示例演示了str函数的具体应用场景和效果。 str 函数的基本用法。str 函数是 Python 中的一个内置函数,用于将给定对象转换为字符串形式。...

    什么是计算机浏览器 Cookie?保护您的隐私

    你有没有浏览过网络,看到一些个性化的推荐,而没有搜索相关的关键词?事实上,这些个性化推荐中的大多数都来自浏览器 cookie。那么,计算机浏览器中的cookie到底是什么?它有什么作用?.什么是cookie?Cookie是存储在用户计算机上的小型文本文件。每当用户访问用户时,该 cookie 或 c...

    瓜子是糖尿病的“加速器”医生提醒要保护胰岛,记住5种食物和5种禁令

    在健康领域,饮食习一直是热门话题,尤其是对于慢性病患者来说,食物选择可以是良药,也可以是无形的加速器。糖尿病作为一种常见的慢性疾病,对患者的生活方式提出了严格的要求,尤其是在饮食方面。前段时间,有一个关于 瓜子是糖尿病的 加速器 吗?这个话题在退休教师陈阿姨的生活中掀起了波澜。通过探索这个问题,她不...