匿名函数: lambda

 lambda表达式生成了一个函数,最后返回这个函数,不像def语句最后把函数对象赋值给了变量名,这也是lambda函数成为匿名函数的原因(没有变量名)


lambda表达式:

      lambda argument1,... : expression

注意:

lambda 是以个表达式,而不是一个语句

lambda  的主体是一个单个表达式,而不是一个代码块,lambda主体中不能使用if语句


默认参数也能在lambda表达式中使用:

func = lambda x='a', y='b', z='c': x+y+z
func() 

使用的例子:

1.模拟print函数

import sys
ff = lambda x: sys.stdout.write(x + '/n')
ff()
2.使用if/else 三元表达式,实现嵌套逻辑

ff = lambda x,y : x if x>y else y
ff(x,y)
3.在lambda使用map,列表解析

ff = lambda x: map(sys.stdout.write, x)
t = ff(['spam\n', 'totast\n', 'eggs\n'])

f2 = lambda x: [sys.stdout.write(y) for y in x]
tt = f2(['spam\n', 'totast\n', 'eggs\n'])

嵌套lambda和作用域

     lambda表达式能够使用上层函数中的变量

def action(x):
    return lambda y: x*y

act = action(4)
act(5)

action = lambda x: (lambda y: x*y)

act =action(4)
act(5)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值