关于python是函数式语言的信息( 二 )


#求平方
#0*0,1*1,2*2,3*3,....8*8
squares = map(lambda x : x*x ,range(9))
print squares
#========输出===========
[0, 1, 4, 9, 16, 25, 36, 49, 64]
Reduce函数:
def add(a,b):
return a+b
add = reduce(add,[2,3,4])
print add
#========输出===========
9
对于Reduce函数每次是需要对两个数据进行处理的,首选取2 和3,通过add函数相加之后得到5,接着拿5和4 ,再由add函数处理,最终得到9。
在前面map函数例子中我们可以看到,map函数是每次只对一个数据进行处理 。
然后 , 我们发现通过Reduce函数加lambda表达式式实现阶乘是如何简单:
#5阶乘
#5!=1*2*3*4*5
【关于python是函数式语言的信息】print reduce(lambda x,y: x*y, range(1,6))
#========输出===========
120
Python中的除了map和reduce外,还有一些别的如filter, find, all, any的函数做辅助(其它函数式的语言也有),可以让你的代码更简洁 , 更易读 。我们再来看一个比较复杂的例子:
#计算数组中正整数的值
number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]
count = 0
sum = 0
for i in range(len(number)):
if number[i]0:
count += 1
sum += number[i]
print sum,count
if count0:
average = sum/count
print average
#========输出===========
30 6
5
如果用函数式编程,这个例子可以写成这样:
number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]
sum = filter(lambda x: x0, number)
average = reduce(lambda x,y: x+y, sum)/len(sum)
print average
#========输出===========
5
最后我们可以看到,函数式编程有如下好处:
1)代码更简单了 。
2)数据集,操作 , 返回值都放到了一起 。
3)你在读代码的时候,没有了循环体,于是就可以少了些临时变量 , 以及变量倒来倒去逻辑 。
4)你的代码变成了在描述你要干什么,而不是怎么去干 。
python支持函数式编程吗python不是完全支持函数式编程,python是函数式语言他支持部分函数式编程,函数式编程就是一种抽象程度很高python是函数式语言的编程范式,纯粹的函数式编程语言编写的函数没有变量 , 因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数python是函数式语言我们称之为没有副作用 。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的 。
Python对函数式编程提供部分支持 。由于Python允许使用变量,因此,Python不是纯函数式编程语言 。
python是一种什么类型的编程语言Python(英国发音:/?pa?θ?n/ 美国发音:/?pa?θɑ?n/)是一种广泛使用python是函数式语言的解释型、高级编程、通用型编程语言python是函数式语言,由吉多·范罗苏姆创造,第一版发布于1991年 。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP 。
Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词) 。
相比于C++或Java , Python让开发者能够用更少的代码表达想法 。不管是小型还是大型程序 , 该语言都试图让程序的结构清晰明python是函数式语言了 。
与Scheme、Ruby、Perl、Tcl等动态类型编程语言一样,Python拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式 , 包括面向对象、命令式、函数式和过程式编程 。其本身拥有一个巨大而广泛的标准库 。

推荐阅读