用另一个功能定义一个功能

时间:2018-08-23 15:20:40

标签: python python-3.x

有人可以帮忙解释一下这里发生了什么吗?我不明白第三部分发生了什么,为什么结果是9。谢谢!

>>> def square(x):
        return x ** 2

>>> def f(x):
        return x * x

>>> def try_f(f):
        return f(3)

>>> try_f(square)
9

3 个答案:

答案 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行为