WEB开发网
开发学院软件开发Python 可爱的 Python: 在 Python 中进行函数编程,第 3 ... 阅读

可爱的 Python: 在 Python 中进行函数编程,第 3 部分

 2008-11-13 13:19:33 来源:WEB开发网   
核心提示: 清单 6:列表理解的有效逐级下降>>> [func for x in list_of_list[:1]... for car in (x[0],)... for func in (car+car**2,)][0]2高阶函数:Curry有三个最普通的高阶函数内建在 Pyth

清单 6:列表理解的有效逐级下降

>>> [func for x in list_of_list[:1]
... for car in (x[0],)
... for func in (car+car**2,)][0]
2

高阶函数:Curry

有三个最普通的高阶函数内建在 Python 中: map() 、 reduce() 和 filter() 。这些函数所做的 -- 也是我们称之为“高阶”的原因 -- 是把其他的函数作为他们的(一些)参数。其它的高阶函数(不是这些内建函数)返回函数对象。

Python 总是通过第一类函数对象的地位优势赋予使用者建造他们自己的高阶函数的能力。以下是一个小示例:

清单 7:小 Python 函数工厂

>>>
  
     def
  
     foo_factory
    
    ():
...
  
     def
  
     foo
    
    ():
...
  
     print
    
     "Foo function from factory"
...
  
     return
    
     foo
...
>>> f = foo_factory()
>>> f()
Foo function from factory
   

我在这个系列的 第 2 部分讨论过 Xoltar 工具包,它是带有高阶函数的非常好的集合。Xoltar 的 functional 模块提供的大多数函数是从各种传统的函数语言发展而来的,并且它们的有效性在这么多年已经被证实了。

可能最著名的和最重要的高阶的函数是 curry() 。 curry() 是以逻辑学家 Haskell Curry 命名的,他的名字也曾命名上面提到的编程语言。"currying" 优越的地方在于它能够象对待一个局部参数函数那样处理(几乎)每一个函数。所有对于 Curry 有必要做的就是容许函数的返回值对于它们自己也是函数,但是带有返回的函数可能是“狭窄”的或者“接近完成”的。这项工作和我所写的 第 2 部分有些相近 -- 每次连续的调用 curried 返回函数“充满”了在最后计算中的更多数据(数据依附于过程)。

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

Tags:可爱 Python Python

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