有人能给我解释一下这个代码块到底发生了什么吗?

2024-05-14 13:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白引用函数myfunc的mydoubler对象是如何将参数传递给lambda表达式中的“a”的。你知道吗

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

引用是否也意味着“mydoubler”的行为与myfunc(n)一样,因此接受一个参数,其中该参数必须是函数“myfunc”中唯一的其他变量。所以我的双工(a)实际上是: '返回λa:a*2

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

    mydoubler = myfunc(2)

    print(mydoubler(11))

没有错误返回,只是我试图了解发生了什么。你知道吗


Tags: 对象lambda函数参数return表达式def错误
1条回答
网友
1楼 · 发布于 2024-05-14 13:38:16
  • 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函数并返回结果

相关问题 更多 >

    热门问题