如何解决如何编写一个函数来转换函数并返回转换后的函数?
我想对一个函数执行一些转换并返回一个新函数。
比如说我想要一个函数 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 举报,一经查实,本站将立刻删除。