有人可以解释为什么这个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))
答案 0 :(得分:4)
def do_twice(func, x, y):
return func(func(x, y), func(x, y))
使用add
进行调用时,5
和10
将返回
add(add(5, 10), add(5, 10))
即
add(15, 15)
确实是30
add
已作为第一个参数传递,因此在func
内称为do_twice
。同样,a
为5,b
为10
。
答案 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来验证它,并且您应该看到一个错误,指出字符串不可调用或者其他东西。