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

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

Mary-Kate Olsen
发布: 2024-12-20 18:13:18
原创
974 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板