首页 > 解决方案 > 这个装饰器怎么写?

问题描述

请帮忙 。如何编写此装饰器(如果验证器返回“True”,则使用验证器将 args 发送到 func :

#define decorator here ...

def validator(x):
    return x>=0

@decorator(validator)
def f(x):
    return x**0.5

print(f(4)) #should print 2
print(f(-4)) #should print error

标签: python

解决方案


这是装饰器定义

def decorator(method):
    def wrapper(func):
        def inner_wrapper(x):
            if method(x):
                return func(x)
            else:
                raise Exception
        return inner_wrapper
    return wrapper


def is_positiv(x):
    return x > 0


@decorator(is_positiv)
def f(x):
    return x**0.5

这是关于 python 中的装饰器的一些文档(https://realpython.com/primer-on-python-decorators/

最良好的问候


推荐阅读