Python 函数式编程之lambda
2014-08-06 13:47
323 查看
Python 是门多范式的编程语言,它支持函数式编程(只支持部分,不是完全的支持),其中的lambda 匿名函数就是借鉴了Lisp。
先来看看使用自定义函数和使用lambda 匿名函数的各自实现:
使用lambda构建的表达式,返回的对象是函数,所以,需要赋给一个对象,然后再调用这个函数。当然,也可以直接采用下面这种方式直接调用:
2. lambda 的格式和应用
格式:lambda [参数]: 表达式
lambda 中的参数与函数的参数相对应,表达式也函数中的语句相对应。实际上,lambda 常常与filter(), map(), reduce() 这几个函数组合在一起用。如:
>>> foo[2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> print filter(lambda x: x%3==0, foo)
[18, 9, 24, 12, 27]
>>> print map(lambda x: x*2+10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
如上面所说,使用lambda 只是为了让代码更简洁易懂的情况下才使用,如果一味的使得lambda 而让代码可读性变差,是不可取的,比如用以下方式来打印九九口诀表:
print '\n '.join(map(lambda x: ' '.join(map(lambda y: "%s x %s = %s " % (x, y, x * y), range(1,10))), range(1,10)))
1. 什么是匿名函数?
所谓匿名函数,从功能上讲相当于一个函数,但本质上是个表达式,它返回一个函数对象。那为什么我们还需要匿名函数呢?答案是,如果一个函数功能相对较简单时,使用匿名函数替代让代码显得更简洁,也就是更Pythonic!先来看看使用自定义函数和使用lambda 匿名函数的各自实现:
#自定义函数 >>> def add(x, y): return x+y >>> add(2, 3) 5 #使用lambda >>> a = lambda x, y: x+y >>> a(2, 3) 5
使用lambda构建的表达式,返回的对象是函数,所以,需要赋给一个对象,然后再调用这个函数。当然,也可以直接采用下面这种方式直接调用:
>>> (lambda x, y: x+y) (2, 3) # 实时定义并调用 5
2. lambda 的格式和应用
格式:lambda [参数]: 表达式lambda 中的参数与函数的参数相对应,表达式也函数中的语句相对应。实际上,lambda 常常与filter(), map(), reduce() 这几个函数组合在一起用。如:
>>> foo[2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> print filter(lambda x: x%3==0, foo)
[18, 9, 24, 12, 27]
>>> print map(lambda x: x*2+10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
如上面所说,使用lambda 只是为了让代码更简洁易懂的情况下才使用,如果一味的使得lambda 而让代码可读性变差,是不可取的,比如用以下方式来打印九九口诀表:
print '\n '.join(map(lambda x: ' '.join(map(lambda y: "%s x %s = %s " % (x, y, x * y), range(1,10))), range(1,10)))
相关文章推荐
- Python 函数式编程--匿名函数Lambda
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- 【Python学习笔记】函数式编程:匿名函数lambda
- python 函数式编程 <lambda>
- python lambda函数 与 函数式编程
- Python函数式编程之lambda
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- python笔记11 - lambda函数,globals()/locals()函数,eval()exec()函数,闭包函数,函数式编程,高阶函数
- Python函数式编程学习:lambda, map, reduce, filter
- 可爱的 Python : Python中函数式编程,第一部分
- Python中函数式编程
- 可爱的 Python : Python中函数式编程,第一部分
- python 反人类函数式编程模拟while和if控制流
- Python基础:函数式编程
- python的函数式编程玩法+年末小感
- python函数之二 函数式编程
- Python学习9:函数式编程
- Python修饰器的函数式编程
- 可爱的 Python : Python中的函数式编程,第三部分
- 可爱的 Python : Python中函数式编程,第二部分