摘要:在 Python 中,有一个简洁的东西,称为一等函数。这意味着可以像对待任何其他变量一样对待函数。可以将它们作为参数传递,从其他函数返回它们,甚至将它们分配给新名称。装饰器利用了这一点,让以超级干净和流畅的方式调整或增强功能的行为。
在 Python 中,有一个简洁的东西,称为一等函数。这意味着可以像对待任何其他变量一样对待函数。可以将它们作为参数传递,从其他函数返回它们,甚至将它们分配给新名称。装饰器利用了这一点,让以超级干净和流畅的方式调整或增强功能的行为。
想象一下,有一堆函数,想知道每个函数需要多长时间才能运行。可以创建一个装饰器来为您处理此问题,而不是用计时代码填充每个函数。
import timedef timing_decorator(func): def wrapper(*args, **kwargs): start_time = time.time result = func(*args, **kwargs) end_time = time.time print(f"{func.__name__} took {end_time - start_time} seconds to run.") return result return wrapper@timing_decoratordef slow_function: # Let's pretend this is a slow function time.sleep(2)slow_function该 timing_decorator 函数将另一个函数 func 作为其特殊客户机,用计时代码包装它,并将其作为新函数(称为 wrapper )提供。当使用 @timing_decorator on slow_function 时,它会自动测量函数运行所需的时间。这像在你的代码上撒了一层魔法!
在 Python 中,使用 @ 符号将装饰器应用于函数。这是一种获得与以下代码相同的结果的奇特方法,但以更简洁、更 Python 的方式:
def slow_function: # Pretend this is a slow function time.sleep(2)slow_function = timing_decorator(slow_function)该 @ 符号将一些看起来有点凌乱的东西转化为整洁优雅的 Python 传统。
在许多实际情况下,装饰师可以成为您的伙伴:
身份验证:可以创建装饰器来检查是否允许某人访问 Web 应用的某些部分。日志记录:装饰器可以跟踪函数调用,从而更轻松地查看代码中发生的情况。缓存:通过缓存昂贵的函数调用结果来节省时间。授权:检查用户是否有权执行特定操作。验证:在函数开始执行其操作之前,请确保函数的输入是 A 正常的。甚至可以将多个装饰器堆叠在一起,以创建一些非常花哨的行为。这意味着可以构建超级灵活且可重用的代码。
@timing_decorator@log_decoratordef complex_function: # Do something complexcomplex_function来源:自由坦荡的湖泊AI一点号
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!