微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何编写一个函数来转换函数并返回转换后的函数?

如何解决如何编写一个函数来转换函数并返回转换后的函数?

我想对一个函数执行一些转换并返回一个函数。 比如说我想要一个函数 translate_arg_of_func(func) 使得

new_func=translate_arg_of_func(func)
new_func(4)

返回 func(4+1)。我将如何在 python 中执行此操作?

(我不希望 translate_arg_of_func 必须被提供给 func 的参数。)

解决方法

它是一个 decorator,可以这样写:

def translate_arg_of_func(func):
    def wrapper(arg):
        return func(arg + 1)
    return wrapper
,

你基本上是在谈论装饰一个函数:

def translate_arg_of_func(fun):
    def new_fun(arg):
        return fun(arg + 1)
    return new_fun

现在您可以使用以下方法装饰您的函数:

new_func=translate_arg_of_func(func)

甚至直接使用@来装饰函数:

@translate_arg_of_func
def func(arg):
    print(arg)
,

它叫做装饰者模式,欢迎来到装饰者的世界。

例如


def add_more_1(func):
    def _mutate_func(*args):
        new_arg = args[0]+1
        return func(new_arg)
    return _mutate_func

def double(x):
    return x*2
print(double(2))

@add_more_1
def double_mutate(x):
    return x*2

print(double_mutate(2))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。