Python模板函数简介说明

下面给大家一个宝贵的建议,对于那些从来没有学习过编程或者并非计算机专业的编程学习者而言,Python是***的选择之一,并建议那些初学的程序员先从Python开始学习编程。

今天用Python模板函数写了两个程序,水仙花数和***数!经典的c练习题!水仙花数的程序很小,没什么感觉,***数的程序就复杂一些了!同学用c写,我用Python写,代码几乎是对等翻译!我用的机器cpu主频超过同学的两倍,内存是同学的4倍,就这样,程序运行的时间几乎相同(10w个数据)。

可想而知,Python模板函数作为解释型语言,速度上面确实是个巨大的问题!我曾经看到有文章说,就算对解释型语言,Python也是其中比较慢的,可怕。想象一下运行起来比basic还慢的程序。。。!疯了!还有就是,Python模板函数运行起来必须带模板的名称!比如开方的函数!

在函数式编程里面, 我们可以定义匿名函数,也可以把函数赋值给一个变量或作为参数传递给另外一个函数,Python语言很早就支持函数式编程,我们可以用lambda关键字定义一个匿名函数,然后赋值给一个变量,如下所示:

 
 
 
  1. from string import strip,upper  
  2. #functions:  
  3. #  
  4. def map_add(x):  
  5.     return x+3  
  6. #  
  7. if __name__=='__map_add__':  
  8.     map_add(x)  
  9. #zip file  
  10. def zip_file():  
  11.     #open file  
  12.     f = open('map.txt')  
  13.     lines = f.readlines()  
  14.     print lines  
  15.     f.close()  
  16.     #  
  17.     print 'BEFORE\n'  
  18.     for eachline in lines:  
  19.         print '[%s]' % eachline[:-1]  
  20.     #  
  21.     print 'AFTER\n'  
  22.     for eachline in map(upper, map(strip, lines)):  
  23.         print '[%s]' % eachline  
  24. #  
  25. if __name__=='__zip_file__':  
  26.     zip_file() 

lambda定义的匿名函数可以引用外围函数的变量,上面的代码中,第二个lambda表达式定义的匿名函数引用了***个匿名函数的参数n,因为***个匿名函数是第二个匿名函数的外围函数。

除了lambda表达式之外,Python模板函数还支持将函数作为参数传递给另外一个函数,有点类似于C语言中的函数指针,Python语言内建的函数filter,map,reduce就可以接受函数参数。

filter(function, sequence)会遍历sequence中的每一个item,并以该item为参数调用function,如果function返回ture,就将该item加到结果sequence中,这就达到过滤sequence的效果,作为参数的function就是过滤的条件,例子如下:

 
 
 
  1. >>>reduce(lambda x,y:x*y, [1,2,3,4,5]#((((1*2)*3)*4)*5  
  2. >>>120  
  3.  
  4. >>>reduce(lambda x,y:x*y, [1,2,3], 10)  
  5. >>>60 #((1*2)*3)*10  

这里用lambda定义的匿名函数来定义过滤条件,在list a中返回是偶数的items,下面这个模块以一个现有的文本为参数,清除多余空格,再把所有文字都转换为大写(英文)。为子演示程序要创建一个map.txt该文件中有几行前后有多余空格的字符串。

【编辑推荐】

  1. 如何使Python嵌入C++应用程序?
  2. 深入探讨Ruby与Python语法比较
  3. Python学习资料介绍分享
  4. Python学习经验谈:版本、IDE选择及编码解 决方案
  5. 浅析Python的GIL和线程安全

网页名称:Python模板函数简介说明
分享路径:http://www.shufengxianlan.com/qtweb/news11/380361.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联