关于python:如何将函数作为参数并调用它?

How can you take a function as a parameter and call it?

我的任务如下:"编写一个名为operate的函数,它将2个名为a、b的整数作为参数,并编写一个名为func的函数,它将2个整数作为参数。还可以编写函数addsubmuldiv,这些函数取2个整型参数,并执行与其名称对应的操作,并打印结果。调用operate(a, b, func)将导致调用func(a, b)。我已经完成了前四个部分,但我仍然坚持要如何实现operate。这是迄今为止我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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)


要实现这一点,您需要从您的函数中获得一些东西,而不仅仅是打印一些东西。这允许您稍后使用结果。为此,只需将return语句与一些表达式一起使用:

1
2
3
4
5
6
7
8
9
10
11
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):

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

现在可以这样做:

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

这将导致输出:

1
2
3
4
5
1
6
1.5

在我问到的关于标准库的一条评论中——你看,所有这些都已经由Python实现了。您可以将前四个函数定义替换为:

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

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