详解Python的lambda函数用法

lambda函数用法

lambda非常重要的一个定义。lambda在【运行时】才绑定,【不是】在定义的时候绑定。下面这个列子:
本意想:让X分别与0到1的数相加。x+0,x+1,x+2,x+3
实际运行结果是:

0
0
0
0

原因就是上面提到的,运行时才绑定。先运行的for循环,无法捕捉到循环。

func = [lambda x: x + n for n in range(4)]  # x+n,n是从0到3 For循环,x+0,x+1,x+3
for f in func:
    print(f(0))  # 打印func列表的第一个数据。

——————————————————————
修改后的代码:增加了n=n

func = [lambda x,n=n:x+n for n in range(4)]
for f in func:
    print(f(0))

运行结果:

0
1
2
3

这是我们想达到的结果。n=n,就是在定义时捕捉。

原因:

n是自由变量,执行时才能确定。
我们把n变成参数就可以了,因为参数可以在定义时绑定变量。
——————————————————————
下面的例子很奇怪:

h = 1
a = lambda k: h + k
h = 2
b = lambda k: h + k
print(a(3))
print(b(3))

运行结果:

5
5

我们赋值的h=1根本没被使用。始终做计算3+2。
h=1
h=2
都是全局变量,就会以最后一个为准。
——————————————————————
修改后

h = 1
a = lambda k,h=h: h + k
h = 3
b = lambda k,h=h: h + k
print(a(10))
print(b(10))

运行结果:

11
13

——————————————————————

h = 1
h = 100
a = lambda k,h=h: h + k
h = 3
b = lambda k,h=h: h + k
print(a(10))
print(b(10))

结果:

110
13

上面最后的例子,发现h=1,h=100,只选择100参与计算。100+10=110 因为h=1,h=100都是全局,以最后为准。python代码从上到下运行的。

到此这篇关于详解Python的lambda函数用法的文章就介绍到这了,更多相关lambda函数用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析

    本文实例讲述了Python函数的返回值.匿名函数lambda.filter函数.map函数.reduce函数用法.分享给大家供大家参考,具体如下: 函数的返回值: 函数一旦执行到   return,函数就会结束,并会返回return 后面的值,如果不使用显式使用return返回,会默认返回None . return None可以简写为   return. def my_add(x,y): z=x+y return z print(my_add(1,2))##打印的是返回值 def my_add_

  • python3 lambda表达式详解

    技术背景 lambda表达式本身是一个非常基础的python函数语法,其基本功能跟使用def所定义的python函数是一样的,只是lambda表达式基本在一行以内就完整的表达了整个函数的运算逻辑.这里我们简单展示一些lambda表达式的使用示例,以供参考. 二元求和 首先我们尝试一个最简单的二元求和的ipython案例,输入两个参数x和y,返回这两个元素的和: [dechin@dechin-manjaro 2021-python]$ ipython Python 3.8.5 (default,

  • Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(lambda x: x*x,[y for y in r

  • 详解python中的lambda与sorted函数

    lambda表达式 python中形如: lambda parameters: expression 称为lambda表达式,用于创建匿名函数,该表达式会产生一个函数对象. 该对象的行为类似于用以下方式定义的函数: def <lambda>(parameters): return expression python中的lambda函数可以接受任意数量的参数,但只能有一个表达式.也就是说,lambda表达式适用于表示内部仅包含1行表达式的函数.那么lambda表达式的优势就很明显了: 使用lam

  • Python lambda表达式filter、map、reduce函数用法解析

    前言 lambda是表达式,用于创建匿名函数,可以和filter.map.reduce配合使用. 本文环境Python3.7. 一.lambda表达式 lambda 只包含一个语句,用于创建匿名函数. 语法: lambda [arg1 [,arg2,.....argn]]:expression arg1 -- 参数,可以有多个 expression -- 表达式 使用例子: f1 = lambda x : x > 10 print(f1(1)) #输出:False print(f1(11)) #

  • python lambda的使用详解

    1. lambda语法 lambda argument_list: expression lambda是Python预留的关键字,argument_list(参数列表)和expression(关于参数的表达式)由用户自定义. 2. lambda使用简单示例 lambda x, y: x*y:函数输入是x和y,输出是它们的积x*y lambda:None:函数没有输入参数,输出是None lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须

  • 详解Python的lambda函数用法

    lambda函数用法 lambda非常重要的一个定义.lambda在[运行时]才绑定,[不是]在定义的时候绑定.下面这个列子: 本意想:让X分别与0到1的数相加.x+0,x+1,x+2,x+3 实际运行结果是: 0 0 0 0 原因就是上面提到的,运行时才绑定.先运行的for循环,无法捕捉到循环. func = [lambda x: x + n for n in range(4)] # x+n,n是从0到3 For循环,x+0,x+1,x+3 for f in func: print(f(0))

  • 详解Python的Lambda函数与排序

    lambda函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以用在任何需要函数的地方.下面的例子比较了传统的函数与lambda函数的定义方式. 前几天看到了一行求1000的阶乘的Python代码 Python代码 print reduce(lambda x,y:x*y, range(1, 1001)) 一下子被python代码的精简与紧凑所折服,故对代码进行了简单的分析. reduce与range都是Python的内置函数. range(1,1001)表示生成1到1000的连续整数

  • 详解python中groupby函数通俗易懂

    一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式--函数名称) 举例如下: print(df["评分"].groupby([df["地区"],df["类

  • 详解Python中高阶函数(map,filter,reduce,sorted)的使用

    目录 什么是高阶函数 自定义一个高阶函数 常用的内置高阶函数 map函数 参数说明 功能 实例 filter函数 功能 实例 reduce函数 功能 实例 sorted函数 参数说明 功能 实例 sort和sorted 总结 什么是高阶函数 高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数. 高阶函数可以是你使用def关键字自定义的函数,也有Python系统自带的内置高阶函数. 自定义一个高阶函数 我们下面的例子中,函数 sen

  • 一文详解Python中复合语句的用法

    目录 Python复合语句 1.if 语句 2.while 语句 3.for 语句 4.try 语句 5.with 语句 6.match 语句 Python复合语句 复合语句是包含其它语句(语句组)的语句:它们会以某种方式影响或控制所包含其它语句的执行.通常,复合语句会跨越多行,虽然在某些简单形式下整个复合语句也可能包含于一行之内. if.while和for语句用来实现传统的控制流程构造.try语句为一组语句指定异常处理和/和清理代码,而with语句允许在一个代码块周围执行初始化和终结化代码.函

  • 详解python中静态方法staticmethod用法

    在开发的时候, 可以使用类对方法进行封装,如果某一个方法需要访问到对象的实例属性,可以把这个方法封装成一个实例方法.如果某一个方法不需要访问对象的实例属性,但是需要访问到类的类属性,这个时候就可以考虑把这个方法封装成一个类方法.一个实例方法, 一个类方法,这是两种方法类型,但是在开发中还有一种情况,如果要封装的某一个方法,既不需要访问到对象的实例属性,也不需要访问类的类属性,这个时候就可以考虑把这个方法封装成一个静态方法. 在开发中,如果类中的某个方法既不需要访问实例属性或者调用实例方法,同时也

  • 详解Python中enumerate函数的使用

    Python 的 enumerate() 函数就像是一个神秘的黑箱,你无法简单地用一句话来概括这个函数的作用与用法. enumerate() 函数属于非常有用的高级用法,而对于这一点,很多初学者甚至中级学者都没有意识到.这个函数的基本应用就是用来遍历一个集合对象,它在遍历的同时还可以得到当前元素的索引位置. 我们看一个例子: names = ["Alice","Bob","Carl"] for index,value in enumerate(n

  • 详解Python高阶函数

    本文要点 1.什么是高阶函数 2.python中有哪些常用的高阶函数 什么是高阶函数? 在了解什么是高阶函数之前,我们来看几个小例子.我们都知道在 python 中一切皆对象,函数也不例外.比如求绝对值函数 abs,我们可以用一个变量 f 指向 abs 函数,那么当调用 f() 的时候可以得到和 abs() 一样的效果,这说明变量可以指向函数! 同理我们将 abs 指向另一个函数 abs = len,那么 abs 将不再是求绝对值的函数了,abs指向的是求长度的 len 函数.这说明函数名其实就

  • 详解python:time模块用法

    time模块下有两种时间表示方法: 第1种是:时间戳的方式.是基于1970年1月1日0时0分0秒的偏移.浮点数. 第2种是:struct_time()类型的表示方法.gmtime()和localtime()可以将时间戳显示为struct_time()类型. 第3种是:格式化时间.其中strftime()函数可以把struct_time()时间格式化显示. strptime()函数可以把时间字符串解释为struct_time()类型,相反,mktime()将struct_time()类型解释为秒

随机推荐