WEB开发网
开发学院软件开发Python 可爱的 Python: Python 中的函数编程 阅读

可爱的 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

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:可爱 Python Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接