如何将函数作为参数并调用它?

时间:2017-09-10 19:01:46

标签: python calculator

我的任务如下:"编写一个名为operate的函数,它将2个名为a,b的整数和一个名为func的函数作为参数,它将2个整数作为参数。还要编写带有2个整数参数的函数addsubmuldiv,并执行与其名称对应的操作并打印结果。致电operate(a, b, func)会致电func(a, b)"。我已经完成了前四部分,但我仍然坚持如何实施operate。到目前为止,这是我的代码:

# this adds two numbers given
def add(a,b):
    print (a + b)

# this subtracts two numbers given
def sub(a,b):
    print (b - a)

# this multiplies two numbers given
def mul(a,b):
    print (a * b)

# this divides two numbers given
def div(a,b):
    print (a / b) 

1 个答案:

答案 0 :(得分:1)

要实现这一点,您需要return来自您的功能,而不仅仅是打印一些东西。这使您可以在以后使用结果。要执行此操作,只需将return语句与某个表达式一起使用:

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

def sub(a, b):
    return a - b 

def mul(a, b):
    return a * b 

def div(a, b):
    return a / b

我已将sub操作的顺序更改为更符合通常定义减法的方式。

现在写一个operate函数实际上非常简单。您已经获得了两个部分:签名应为operate(a, b, func),您应该致电func(a, b)。这实际上几乎就是它最终的所有内容 - 您需要做的只是return它(如果您愿意的话,您也可以print):

def operate(a, b, func):
    return func(a, b)

您现在可以执行以下操作:

print(operate(3, 2, add))
print(operate(3, 2, sub))
print(operate(3, 2, mul))
print(operate(3, 2, div))

这将导致输出:

5
1
6
1.5

在评论中我询问了标准库 - 你看,所有这些都已经由Python实现了。您可以使用以下命令替换前四个函数定义:

from operator import add, sub, mul, truediv as div

让您只定义operate并进行一些测试。