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

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

 2008-11-13 13:19:33 来源:WEB开发网   
核心提示: Bindings 类在一个模块或者函数 def 的范围之内完成我们想要的功能,但是在一个单独的表达式内无法使其工作,可爱的 Python: 在 Python 中进行函数编程,第 3 部分(2),然而,在 ML-系列语言中

Bindings 类在一个模块或者函数 def 的范围之内完成我们想要的功能,但是在一个单独的表达式内无法使其工作。然而,在 ML-系列语言中,就能很自然地在单个表达式内创建绑定:

清单 2:Haskell 表达式级别的名称绑定

    -- car (x:xs) = x -- *could* create module-level binding
list_of_list = [[1,2,3],[4,5,6],[7,8,9]]
    
    -- 'where' clause for expression-level binding
firsts1 = [car x | x <- list_of_list] where car (x:xs) = x
    
    -- 'let' clause for expression-level binding
firsts2 = let car (x:xs) = x in [car x | x <- list_of_list]
    
    -- more idiomatic higher-order 'map' technique
firsts3 = map car list_of_list where car (x:xs) = x
    
    -- Result: firsts1 == firsts2 == firsts3 == [1,4,7]
   

Greg Ewing 注意到使用 Python 的列表理解可以达到同样的效果;我们甚至可以用象 Haskell 的语法那样清楚的方法来做:

清单 3:Python 2.0+ 表达式级别名称绑定

>>> list_of_list = [[1,2,3],[4,5,6],[7,8,9]]
>>> [car_x
  
     for
    
     x
  
     in
    
     list_of_list
  
     for
    
     car_x
  
     in
    
     (x[0],)]
[1, 4, 7]
   

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

Tags:可爱 Python Python

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