可爱的 Python: Python 中的函数编程
2007-03-29 12:05:55 来源:WEB开发网核心提示: 我们对第一类对象所执行的主要操作是将它们传递给 FP 内置函数 map() 、 reduce() 和 filter() ,这些函数中的每一个都接受函数对象作为其第一个自变量,可爱的 Python: Python 中的函数编程(5),map() 对指定列表中每个对应的项执行传递的函数,并返回
我们对第一类对象所执行的主要操作是将它们传递给 FP 内置函数 map() 、 reduce() 和 filter() 。这些函数中的每一个都接受函数对象作为其第一个自变量。
map() 对指定列表中每个对应的项执行传递的函数,并返回结果列表。
reduce() 对每个后续项执行传递的函数,返回的是最终结果的内部累加;例如 reduce(lambda n,m:n*m, range(1,10)) 意味着“10 的阶乘”(换句话说,用每一项乘上前一次相乘的乘积)。
filter() 使用传递的函数对列表中的每一项“求值”,然后返回经过甄别的,通过了传递函数测试的项的列表。
我们还经常将函数对象传递给自己的定制函数,但它们通常等同于上述内置函数的组合。
通过将这三种 FP 内置函数进行组合,可以执行惊人的一系列“流”操作(都不使用语句,而只使用表达式)。
Python 中的函数循环
替换循环与替换条件块一样简单。 for 可以直接转换成 map() 。对于我们的条件执行,我们需要将语句块简化成单一函数调用(我们正逐步接近通常的做法):
清单 3. Python 中的函数 'for' 循环
for
e
in
lst: func(e)
# statement-based loop
map(func,lst)
# map()-based loop
另外,对于连续程序流的函数方法有类似的技术。即,命令编程通常包含接近于“做这样,然后做那样,然后做其它事。”这样的语句。 map() 让我们正好做到这一点:
清单 4. Python 中的函数连续操作
# let's create an execution utility function
do_it =
lambda
f: f()
# let f1, f2, f3 (etc) be functions that perform actions
map(do_it, [f1,f2,f3])
# map()-based action sequence
更多精彩
赞助商链接