python:生成一个新函数,而现有函数中的参数更少

问题描述 投票:0回答:1

我认为,如果可以通过替换现有函数的一个参数来生成新函数,这将使我的代码更易于阅读。在下面的MWE中,我使用了求和函数并尝试实现与装饰器类似的方式,其中a = 5被硬编码为函数。不幸的是,我无法正确解释回溯。

def sum(a,b):
    return a+b

foo = sum
print(foo(2,3))

def new_sum(func, *args,**kwargs):
    def wrapper(func, *args,**kwargs):
        x = func(5, *args, **kwargs)
        return x
    return wrapper

bar = new_sum(func=sum)
print(bar(1))

返回:

$ python3 func_arg.py
5
Traceback (most recent call last):
  File "func_arg.py", line 14, in <module>
    print(bar(1))
  File "func_arg.py", line 9, in wrapper
    x = func(5, *args, **kwargs)
TypeError: 'int' object is not callable
python-3.x python-decorators
1个回答
0
投票

您可以为此使用functools.partial

© www.soinside.com 2019 - 2024. All rights reserved.