有人可以帮忙解释一下这里发生了什么吗?我不明白第三部分发生了什么,为什么结果是9。谢谢!
>>> def square(x):
return x ** 2
>>> def f(x):
return x * x
>>> def try_f(f):
return f(3)
>>> try_f(square)
9
答案 0 :(得分:1)
调用try_f(square)
时,您将square
函数传递给try_f
。
在try_f
中,您命名了第一个参数f
:它与下面定义的f()
函数无关。现在,这是try_f
当前范围的局部变量。
作为一个更好的示例,请采取以下措施:
def square(x):
return x * x
def double(x):
return x * 2
def try_f(func):
return func(4)
>>> try_f(square)
16
>>> try_f(double)
8
答案 1 :(得分:0)
第三个函数具有作为参数的函数,因此在调用时,它以3作为参数运行参数函数。
try_f(f = square)解析为square(x = 3),解析为x * x = 3 * 3 = 9
答案 2 :(得分:0)
您可以通过从try_f函数传递的参数来调用平方函数,并将3作为参数传递给它。您可以添加打印以观察调用哪个函数。
定义f函数不会影响try_f行为