匿名函数 —— 一行函数

lambda —— 关键字

x是普通函数的形参(位置,关键字...)可以不接收参数(x可以不写)

:x是普通函数的函数值(只能返回一个数据类型)(:x返回值必须写)

1)此函数不是没有名字,他是有名字的,他的名字就叫做lambda
2)lambda 是定义匿名函数的关键字,相当于函数的def.
3)lambda 后面直接加形参,形参加多少都可以,只要用逗号隔开就行。
func = lambda a, b, *args, sex='alex', c, **kwargs: kwargs
print(func(3, 4, c=666, name='alex')) 结果:{'name': 'alex'}
# 所有类型的形参都可以加,但是一般使用匿名函数只是加位置参数,其他的用不到。

把匿名函数拆开写,如下

def func(a, b, *args, sex='alex', c, **kwargs):
return kwargs a = func(3, 4, c=666, name='alex')
print(a)
结果:{'name': 'alex'}
4)返回值在冒号之后设置,返回值和正常的函数一样,可以是任意数据类型。(但是想要返回多个元素要以容器的形式返回)
5)匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据

格式:lambda x:x

print((lambda x: x + 6)(5))
结果:11 def func(x):
return x + 6
print(func(5))
结果:11

此处使用列表推导式,返回值是地址

lst = [lambda :i for i in range(5)]
print(lst) 拆解成函数: lis = []
for i in range(5):
def func(): return i a = func
lis.append(a)
print(lis)
结果:[<function func at 0x0000029E97472378>, <function func at 0x0000029E97472400>, <function func at 0x0000029E97472488>, <function func at 0x0000029E97472510>, <function func at 0x0000029E97472598>]

lambda表达式是可以嵌套的

action = (lambdax : (lambda y : x + y))
a = action(10)
a(5) 结果:15
这就是一个用lambda实现的闭包,与普通闭包一样,内嵌lambda表达式可以获得上层lambda函数的变量。

匿名函数的使用

匿名函数通常被用作高阶函数(higher-order function,参数为函数的函数)的参数。比如,几个内置函数:filter(),map(),reduce()。下面我们分别看看这几个函数的用法及达到相同效果的python另一种特征的用法

filter函数

lis = [1, 2, 3, 4]
re = filter(lambda x: x % 2 == 0, lis)
print(list(re)) result1 = [x for x in lis if x % 2 == 0]
print(result1) 结果:[2,4]
[2,4]

map函数

lis = [1, 2, 3]
result = map(lambda x: x*2, lis) # 使用lambda函数
print(list(result)) result1 = [x*2 for x in lis] #使用列表推导式
print(result1) 结果:[2, 4, 6]
[2, 4, 6]

reduce函数

from functools import reduce

lis = [1, 2, 3, 4]
result = reduce(lambda x, y: x+y, lis)
print(result) 结果:10
在Python2.x版本中recude是直接 import就可以的, Python3.x版本中需要从functools这个包中导入

除reduce函数的替代用法比较特殊外,map和filter函数都可以使用列表推导式代替。据说,龟叔本打算将 lambda 和 reduce 都从全局名字空间都移除, 舆论说龟叔不喜lambda 和 reduce最后lambda没删除是因为和一个人给龟叔写了好多封,进行交流然后把lambda保住了

Python匿名函数(lambda函数)的更多相关文章

  1. Python中的lambda函数

    今天在看书的时候,看到了这样的一条语句: if isinstance(value,int) or isinstance(value,float): split_function=lambda row: ...

  2. 【转】python中的lambda函数

    http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html lambda函数也叫匿名函数,即,函数没有具 ...

  3. Python新手学习基础之函数-lambda函数

    lambda函数 在Python里除了用def定义函数外,还有一种匿名函数,也就是标题所示的lambda函数,它是指一类无需定义标识符(函数名)的函数或子程序. lambda函数的使用语法如下: la ...

  4. Python自学笔记-lambda函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 匿名函数 通过 ...

  5. Python中关于Lambda函数的使用总结

    lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...

  6. python中的lambda()函数

    语句:print map(lambda x:x ** 2,[1,2,3,4,5]) 其中lambda()函数在Python文档,文档中解释如下: lambda An anonymous inline ...

  7. Python中的lambda函数介绍

    Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...

  8. python中的lambda函数用法

    例1:传入多个参数的lambda函数def sum(x,y): return x+y用lambda来实现:p = lambda x,y:x+yprint(4,6) 例2:传入一个参数的lambda函数 ...

  9. python return 及lambda函数

    return有两个作用: 1.用来返回函数的运行结果,或者调用另外一个函数.比如max()函数 >>> def fun(a,b): #返回函数结果. return max(a,b) ...

  10. 匿名函数--lambda函数

    匿名函数 匿名函数:为了解决一些功能很简单的需求而设计的一句话函数 (python对匿名函数支持有限,只有一些简单的条件下可以用匿名函数) 匿名函数固定格式: func = lambda *args: ...

随机推荐

  1. 【单例模式】懒汉式的线程安全问题 volatile的作用

    原文链接:https://blog.csdn.net/Activity_Time/article/details/96496579 ****** 1. 懒汉式的Java实现 public class ...

  2. jupyter notebook的魔法命令 % %%

    Magic单元分为两种,一种是line magics,另外一种cell magics. Line magic是通过在前面加%,表示magic只在本行有效. Cell magic是通过在前面加%%,表示 ...

  3. 力扣算法题—149Max Points on a line

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  4. Cocos2d-x的Android配置以及相关参考文档

    关于Win7下配置Coco2d-x的Android开发环境,可以参考子龙山人的博客:Setting Up Cocos2d-x Android Development on Win7,这篇文章写得很详细 ...

  5. 在frameset,iframe內調用Javascript的方法

    在frame內操作主窗口 的兩個方法 getElementsByTagName  var ff=window.parent.window.document.getElementsByTagName(& ...

  6. tex, virtex, initex - 文本格式化和排版

    SYNOPSIS 总览 tex [options] [commands] DESCRIPTION 描述 这份手册页并不全面.此版本的 TeX 完整的文档可以从 info 文件或者手册 Web2C: A ...

  7. 初撩Django-RESTful-rest_framework序列化(将模型序列化为JSON)

    官方网站: https://www.django-rest-framework.org/ 翻译网站:https://q1mi.github.io/Django-REST-framework-docum ...

  8. mongoose 常用数据库操作 更新

    更新 Model.update(conditions, update, [options], [callback]) db.js var mongoose = require('mongoose'); ...

  9. JDK1.8之后的新特性和新接口

    接口的旧特性: 就特性下接口中只有: 常量(必须赋值) 抽象方法abstract(和final static private三个关键字冲突) interface Inter { //int a ; / ...

  10. EcShop二次开发学习方法和Ecshop二次开发必备基础

    ecshop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟.这时催生出了众多电子商务相关的php开源产品.B2C方面有Ecshop ...