Python模板函数简介说明

开发 后端
对于Python的GIL和线程安全很多人不是很了解,通过本文,希望能让大家对Python的GIL等内容有所帮助。本文还将就主要谈下笔者对线程安全的一些理解。

下面给大家一个宝贵的建议,对于那些从来没有学习过编程或者并非计算机专业的编程学习者而言,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和线程安全
责任编辑:chenqingxiang 来源: 新浪科技
相关推荐

2010-02-01 10:40:13

Python Djan

2010-02-23 15:44:24

Python编辑器

2010-02-02 18:14:38

Python函数

2010-03-30 14:46:56

CentOS学习

2010-03-03 18:00:52

Android开源平台

2014-01-21 09:15:12

Python函数

2010-02-24 16:44:58

Python 函数

2009-12-23 17:57:22

WPF默认模板

2010-10-14 14:01:35

MySQL CONVE

2010-10-25 17:28:05

Oracle bita

2010-10-25 15:12:42

Oracle日期函数

2010-10-11 16:19:30

Mysql聚合函数

2009-11-11 13:51:23

VS DisplayI

2010-01-06 17:06:05

Json格式

2009-10-09 17:57:20

结构化布线

2009-12-02 15:32:13

Visual Stud

2010-10-25 14:47:49

Oracle系统变量函

2009-12-22 09:15:02

ADO.NET功能

2010-10-25 17:39:24

Oracle单行日期函

2011-04-12 13:27:09

Oracle日期函数
点赞
收藏

51CTO技术栈公众号