Python模板函数简介说明
创始人
2024-06-22 07:50:39
0

下面给大家一个宝贵的建议,对于那些从来没有学习过编程或者并非计算机专业的编程学习者而言,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和线程安全

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...