有人可以确切地向我解释此代码块中发生了什么吗?

时间:2019-05-25 00:28:04

标签: python

我不明白引用函数myfunc的mydoubler对象如何在lambda表达式内将参数传递给'a'。

我得到的是: 有一个函数“ myfunc”带有参数“ n”。函数“ myfunc”使用lambda表达式“ lambda a:a * n”返回值。 对象mydouble是对函数“ myfunc(2)”的引用,其中mydoubler是“ return lambda a:a * 2”。

该引用是否还意味着'mydoubler'的行为与myfunc(n)相同,因此需要一个参数,该参数必须是函数'myfunc'中唯一的其他变量。这样mydoubler(a)确实是: '返回lambda a:a * 2

    def myfunc(n):
        return lambda a : a * n

    mydoubler = myfunc(2)

    print(mydoubler(11))

没有错误返回,只有我试图了解正在发生的事情。

1 个答案:

答案 0 :(得分:2)

  • lambda函数是一个小的匿名函数
  • lambda函数可以接受任意数量的参数,但只能具有一个表达式

lambda函数的工作方式如下

lambda (args):return value

所以基本上和其他功能一样

考虑以下示例

x = lambda a, b : a * b
print(x(5, 6))

x现在就像一个函数(变量内部的函数),因此您可以随时调用它 ...以a,b作为参数并返回a * b,因此在这种情况下,结果为30

在您的情况下,您在python函数中具有lambda匿名函数,所以发生了 您调用 myfunc 并将n值传递给lambda函数,并返回该函数(请注意,返回了lambda函数),请使用给定值再次调用lambda函数,并它返回结果