Python匿名函数

Python匿名函数

□ Python中借助lambda表达式来构建匿名函数
□ 格式
	lambda 参数列表 : 表达式
□ 冒号来分割参数列表和表达式
□ 不需要return,表达式的值,就是匿名函数的返回值
□ lambda表达式(匿名函数)只能写在一行上,也被称为单行函数
lambda x : x ** 2

调用

(lambda x : x ** 2)(3)

在这里插入图片描述

# 虽然也可以写成
fnc = lambda x : x ** 2
fnc(3)
# 但是官方并不推荐这么使用,这样以来就失去了匿名表达式的意义,不如还原回普通的函数:
# def fnc(x):
# 	return x ** 2
# lambda 后接参数列表,也就是说,参数可以是多个
e.g:
lambda x, y : x + y

在这里插入图片描述
lambda函数的多种样例:

(lambda : 0)() #无参,直接返回0
(lambda x, y = 5 : x + y)(6)# 关键字参数
(lambda *args : (x for x in args))(*range(5))# *range(5)解构,*args封装参数为元组
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
# 下面的比较特殊,让我们来逐步分析
[x for x in (lambda *args: map(lambda y: (y+1,args), args))(*range(5))]
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 @1.首先我们要确定,这一行代码最后会按列表解析式返回一个新的列表[x for x in iterable]
 @2.由@1可知, in后面为一个iterable类型:
 	(lambda *args: map(lambda y: (y+1,args), args))(*range(5))
 @3.再来分析,这个iterable对象是一个lambda表达式的调用结果,(*range(5))为调用参数
 	print(*range(5))结果为 0,1,2,3,4这里的*为解构作用,将range(5)这个可迭代对象的结果进行迭代
 @4.lambda *args: map(lambda y: (y+1,args), args)为一个lambda表达式,继续来分卸*args为@3的参数,
 	那么map(lambda y: (y+1,args), args)即为一个表达式
 @5.这里引入map函数,它的语法为:map(func, *iterables) --> map object,即据第一个func参数,
 	将第二个可迭代参数进行处理,返回一个新的对象
 @6.这里map的func参数还是一个lambda表达式,即lambda y: (y+1,args),它的意思是将,map的第二个args参数
 	中每一个元素迭代赋值给y,然后用y+1和args这个元素来构建一个二元元组,结果如下图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值