具有来自其他函数的参数的函数

2024-04-27 04:51:22 发布

您现在位置:Python中文网/ 问答频道 /正文

如何创建这样的内容:

def test(a)
    return a

def invoker(func):
    func() #here I need call the function twice and sum result (test function)

invoker(test(10), test(15))

Tags: andthetest内容returnheredeffunction
2条回答

我认为任意参数列表就是您要寻找的:http://docs.python.org/dev/tutorial/controlflow.html#arbitrary-argument-lists

def test(a):
    return a

def invoker(*args):
    print sum(args) # Prints 25
    print args # Prints (10, 15)

invoker(test(10), test(15))

在Python3中:

from functools import reduce
from operator import add
def add_many(func, *args):
    return reduce(add, map(func, args))

简化(贷记mbatchkarov):

def add_many(func, *args):
    return sum(map(func, args))

func是带有一个参数的回调,args是该回调使用的值的列表。根据func映射内置转换参数。reduce在类似Lisp的语言中充当前缀运算符(+1234)=1+2+3+4,与reduce相同。add只是回调形式中的+运算符。你知道吗

更通用的版本(Python3):

from functools import reduce
def invoker(func, op, *args):
    return reduce(op, map(func, args))

这样称呼(例如):

from operator import add
invoker(lambda x:x, add, 10, 15)  # returns 25

相关问题 更多 >