当前位置: 首页 > 面试题库 >

在python中使用lambda表达式在循环内部生成函数

蓝星辰
2023-03-14
问题内容

如果我列出两个函数列表:

def makeFun(i):
    return lambda: i

a = [makeFun(i) for i in range(10)]
b = [lambda: i for i in range(10)]

为什么名单a,并b没有保存的行为方式?

例如:

>>> a[2]()
2
>>> b[2]()
9

问题答案:

从技术上讲,lambda表达式是在全局范围(最后设置为9)中可见的那一端 关闭的 。在所有10个lambda中都引用 相同的内容 。例如,i
__i

i = 13
print b[3]()

makeFun函数中,lambda在i调用函数时关闭。那是十个 不同 i的。



 类似资料:
  • 问题内容: 我试图通过执行程序和可运行程序并行执行100个任务,该任务需要使用循环变量: 我在“我”的语气中a不休- 据我所知,由于每次迭代都会更改循环变量,因此无法使其成为最终变量或有效地成为最终变量。我找到了一个简单的解决方法, 在我看来,这并不是最有效的解决方案,因为每次迭代都要声明一个新变量。有更好的方法吗? 问题答案: 有更好的方法吗? 我对此表示怀疑。您的解决方案对我来说看起来不错,但

  • 本文向大家介绍python lambda表达式在sort函数中的使用详解,包括了python lambda表达式在sort函数中的使用详解的使用技巧和注意事项,需要的朋友参考一下 1.lambda表达式一般用法 语法: lamda argument:expression example: 2.lambda表达式在sort函数中的使用 假如a是一个由元组构成的列表,对该列表进行排序时,我们需要用到参

  • 问题内容: 我试图在迭代对象列表的循环内创建: 现在,如果我遍历lambda列表并这样称呼它们: 我得到相同的价值。这是最后的价值obj在,因为那是在列表迭代器的块中的最后一个变量。有什么想法可以很好地重写代码以使其正常工作吗? 问题答案: 使用此行:

  • 在本期节目中: 作为lambda表达式。然而,我对如何实际用lambda表达式替换内部类感到困惑,因为我以前从未这样做过。 如果您也能解释lambda表达式是如何工作的,就像我在W3Schools上看到的那样。 //numbers.foreach(n)->{system.out.println(n);}); (1)你引用了一些东西。(数字) (2)表示某种命令。(forEach) (3)设置参数(

  • 对于定义一个简单的函数, Python 还提供了另外一种方法,即使用本节介绍的 lambda 表达式。 lambda 表达式,又称 匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 lambda 表达式的语法格式如下: name = lambda [list] : 表达式 其中,定义 lambda 表达式,必

  • 问题内容: 我来自OOP背景,尝试学习python。我使用的函数使用lambda表达式返回列表中具有最大类型的实例。 该函数正确地返回具有maximum类型的实例。我对以下三件事感到困惑: 该功能如何工作?它正在采取什么论点?我查看了文档,但听不懂。 max函数中关键字的用途是什么?我知道它也用于功能上下文 lambda表达式的含义?如何阅读它们?它们如何工作? 这些都是非常笨拙的概念性问题,但可