首页 >后端开发 >Python教程 >Python 装饰器可以接受参数吗?

Python 装饰器可以接受参数吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-20 18:13:18976浏览

Can Python Decorators Accept Parameters?

装饰器可以接受参数吗?

代码尝试使用带有参数(insurance_mode)的装饰器(@execute_complete_reservation),但失败。发生这种情况是因为带参数的装饰器具有不同的语法。

修订的装饰器语法:

带参数的装饰器返回将一个函数作为参数的函数,然后返回另一个函数功能。它本质上返回一个普通的装饰器。

def decorator_factory(argument):
    def decorator(function):
        def wrapper(*args, **kwargs):
            # Additional code
            function(*args, **kwargs)
            # More additional code
        return wrapper
    return decorator

应用装饰器:

使用此语法,原始代码可以修改如下:

@execute_complete_reservation_factory(True)
def test_booking_gta_object(self):
    self.test_select_gta_object()

在这个修改后的代码中,@execute_complete_reservation_factory 是一个工厂函数,它返回一个装饰器,将实际的测试函数作为参数。

以上是Python 装饰器可以接受参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn