为什么这个输出30在python中?

时间:2016-06-01 15:54:46

标签: python function

有人可以解释为什么这个python代码输出30?好像是add = func?但是python如何在不声明的情况下知道这一点。这是来自sololearn.com的python课程中的一个问题,很多人似乎都不理解

def add(x, y):
    return x + y

def do_twice(func, x, y):
    return func(func(x, y), func(x, y))

a = 5
b = 10

print(do_twice(add, a, b))

3 个答案:

答案 0 :(得分:4)

def do_twice(func, x, y):
    return func(func(x, y), func(x, y))

使用add进行调用时,510将返回

add(add(5, 10), add(5, 10))

add(15, 15)

确实是30

add已作为第一个参数传递,因此在func内称为do_twice。同样,a为5,b10

答案 1 :(得分:1)

A设置为5,B设置为10.此add函数只返回两个输入的总和。 使用add函数5和10作为输入调用do_twice。 首先,do_twice在func(x,y)的两个内部调用中计算5和10之和。这给我们留下了“return func(15,15)”。这增加了15和15,产生了30.最后,你打印出这个值。这就是为什么它是30.为了澄清,请随时跟进!

答案 2 :(得分:1)

Python并不关心你为函数执行func所传入的内容。 但是在你的函数体中do_twice你正在调用传入的函数,即你正在使用func,好像它应该是一个可调用的(你可以调用的东西。函数就是这样的东西。)。您可以通过将字符串传递给do_twice来验证它,并且您应该看到一个错误,指出字符串不可调用或者其他东西。