Day13:装饰器和上下文管理器
在前一节中,我们学习了迭代器和生成器的概念和用法。迭代器和生成器是处理序列数据的强大工具。本节中,我们将介绍装饰器和上下文管理器,它们是Python中的高级特性,能够为我们提供更强大的功能和代码组织方式。
1. 装饰器
装饰器是一种用于修改函数或类的行为的技术。它允许我们在不修改原始代码的情况下,向函数或类添加额外的功能。
装饰器通常由一个函数实现,它接受一个函数作为参数,并返回一个新的函数。我们可以使用@
符号将装饰器应用于目标函数或类。
下面是一个简单的装饰器示例:
def logger(func):
def wrapper(*args, **kwargs):
print("Calling function:", func.__name__)
return func(*args, **kwargs)
return wrapper
@logger
def add(a, b):
return a + b
result = add(2, 3)
print("Result:", result)
在上述示例中,我们定义了一个名为logger
的装饰器函数。它接受一个函数作为参数,并返回一个新的函数wrapper
。wrapper
函数在调用目标函数之前打印函数名,并在之后返回目标函数的结果。
通过将@logger
应用于add
函数,我们实际上将add
函数传递给logger
函数,并将返回的函数重新赋值给add
,使得add
函数具有了额外的日志功能。
2. 上下文管理器
上下文管理器是一种用于管理资源的技术,它可以确保在使用资源之后正确释放资源,即使在发生异常时也能保证资源的正确释放。
上下文管理器可以通过实现__enter__
和__exit__
两个特殊方法来实现。__enter__
方法用于获取资源并返回相关对象,__exit__
方法用于释放资源。
下面是一个使用上下文管理器的示例:
class File:
def __init__(self, filename):
self.f
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
大模型-AI小册 文章被收录于专栏
1. AI爱好者,爱搞事的 2. 想要掌握第二门语言的Javaer或者golanger 3. 决定考计算机领域研究生,给实验室搬砖的uu,强烈建议你花时间学完这个,后续搬砖比较猛 4. 任何对编程感兴趣的,且愿意掌握一门技能的人