`
ihuashao
  • 浏览: 4722072 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

关于 python 中使用 lambda 表达式的问题

阅读更多
关于 python 中 lambda 表达式的一些问题

如果你定义如下一个python的lambda 函数:

------------------------------<wbr></wbr>--
def doLambda(val):
print "value 2:", val

commands = []
for value in range(5):
print "value 1:", value
commands.append(lambda:doLambda(value))

for c in commands:
c()
------------------------------ <wbr></wbr>----

当你调用的时候却发现:doLambda 的value 总是4 ,如下:

>>>
value 1: 0
value 1: 1
value 1: 2
value 1: 3
value 1: 4
value 2: 4
value 2: 4
value 2: 4
value 2: 4
value 2: 4


正确的方式应该如下:

-------------------------------

def wrapper(val):
def inner():
print "value 2:", val
return inner

commands = []
for value in range(5):
print "value 1:", value
commands.append(wrapper(value))

for c in commands:
c()

-------------------------------

>>>
value 1: 0
value 1: 1
value 1: 2
value 1: 3
value 1: 4
value 2: 0
value 2: 1
value 2: 2
value 2: 3
value 2: 4

或者:

-----------------------------------

######
>>> commands = []
>>> def sayNumber(n):
... print n
...
>>> for i in range(5):
... commands.append((lambda v: lambda: sayNumber(v))(i))
...
>>>
>>> for c in commands:
... c()
...
0
1
2
3
4
######

-----------------------------------





分享到:
评论

相关推荐

    python中的lambda表达式的用法

    Python中的lambda表达式是一种简洁的创建单行、小型匿名函数的方式。这些函数没有名称,因此称为匿名,通常用于实现简单的、一次性使用的功能。在Python编程中,lambda表达式常被用作函数参数,特别是在需要一个简短...

    Python中lambda表达式定义函数示例

    使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。...目的:帮助理解lambda表达式定义函数在Python中的具体使用。

    Python 利用lambda表达式简化编程 Python源码

    Python 利用lambda表达式简化编程 Python源码Python 利用lambda表达式简化编程 Python源码Python 利用lambda表达式简化编程 Python源码Python 利用lambda表达式简化编程 Python源码Python 利用lambda表达式简化编程 ...

    【Python 技巧】lambda 表达式(匿名函数)及其在内置函数中的应用

    lambda 表达式,又称匿名函数,即,函数没有具体的名称,常用来表示内部仅包含 1 行表达式...仅仅能在 lambda 表达式中封装有限的逻辑进去。 lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间

    python之lambda表达式.pdf

    Python中的Lambda表达式是一种简洁的创建匿名函数的方式。在编程中,函数是可重用的代码块,用于执行特定任务。而Lambda表达式允许我们在一行内定义这些函数,无需为它们指定名称,这就是“匿名”一词的由来。 ...

    Python的lambda表达式.pdf

    Lambda表达式是Python编程语言中的一个重要特性,它允许程序员创建匿名函数,即没有正式名称的函数。这种功能在需要快速定义小型、一次性的函数时非常有用,尤其在函数式编程风格中。下面我们将深入探讨Lambda表达式...

    Python 079.lambda表达式和匿名函数.mp4

    Python 079.lambda表达式和匿名函数.mp4

    python、lambda表达式的用法举例 .txt 文本格式

    内容概要:python、lambda表达式的用法举例。 采用.txt 文本格式。无需解压,直接使用。 总结了lambda表达式的六种常见用法: 1.命名使用 2.与map()、 filter()和 reduce()等高阶函数配合 3.赋予key参数使用 4.直接...

    python 的函数和 lambda 表达式

    综上所述,Python中的函数和lambda表达式是编程中不可或缺的基础工具,它们提供了代码的封装、复用和模块化能力,帮助程序员编写出结构清晰、易于维护的代码。掌握函数和lambda表达式的使用对于任何Python开发者来说...

    将字符串转换为lambda表达式

    在Python中,`lambda`表达式特别常见,因为它们可以帮助我们快速编写简洁的一行函数。本文将深入探讨如何将字符串转换为`lambda`表达式,以及这种技术在实际应用中的价值。 首先,我们要理解`lambda`表达式的语法。...

    python中的lambda表达式用法详解

    本文实例讲述了python中的lambda表达式用法。分享给大家供大家参考,具体如下: 这里来为大家介绍一下lambda函数。 lambda 函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以用在任何需要函数的地方 。...

    python lambda表达式教程,说明,简介

    python lambda表达式 在Python中,lambda表达式是一种匿名函数的简洁表示方式。

    Python匿名函数(lambda表达式)

    lambda表达式语法如下 函数名 = lambda 参数 : 参数表达式 在使用的时候 函数名(变量) eg. 通过常规方式定义函数 if x&lt;y: res = x+y else: res = x-y return res print(fun(1,3)) # 4 通过lambda表达式...

    Python使用lambda表达式对字典排序操作示例

    ### Python使用Lambda表达式对字典排序操作详解 在Python编程中,经常需要对字典进行排序处理。本文将深入探讨如何使用`lambda`表达式来实现字典的按键排序、按值排序以及多条件排序。 #### Lambda表达式简介 ...

    Python学习笔记之lambda表达式用法详解

    本文实例讲述了Python学习笔记之lambda表达式用法。分享给大家供大家参考,具体如下: Lambda 表达式 使用 Lambda 表达式创建匿名函数,即没有名称的函数。lambda 表达式非常适合快速创建在代码中以后不会用到的函数...

    Python中 Lambda表达式全面解析

    “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包...

    核心基础-利用lambda表达式简化编程-Python实例源码.zip

    本资源"核心基础-利用lambda表达式简化编程-Python实例源码.zip"提供了关于如何使用lambda表达式进行编程的实例源码,涵盖了自动化、数据分析、游戏开发以及网络爬虫等多个应用领域。 首先,我们来深入理解lambda...

    Python3中`sorted()函数`与`lambda表达式`原理解析

    博主的原文:lambda表达式sorted()函数目录:Python3中`sorted()函数`与`lambda表达式`原理解析问题描述原理解析附:原文基础知识lambda表达式sorted 函数问题描述很多小伙伴面对这样的排序,很是懵逼:# 预按照每个...

    简单谈谈python中的lambda表达式

    ### Python中的Lambda表达式详解 #### 一、Lambda表达式简介 Lambda表达式是一种简洁的、可以在一行内定义的小型匿名函数。它主要用于定义简单的、一次性使用的功能,从而避免为这些简单任务创建独立的函数。...

Global site tag (gtag.js) - Google Analytics