函数式python编程的简单介绍

python支持函数式编程吗python不是完全支持函数式编程 , 他支持部分函数式编程,函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的 , 输出就是确定的,这种纯函数我们称之为没有副作用 。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的 。
Python对函数式编程提供部分支持 。由于Python允许使用变量,因此,Python不是纯函数式编程语言 。
python是函数式编程吗python是函数编程
函数编程定义:
1、"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论 。
2、它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用 。[2]
在python常说的函数式编程是什么意思函数式编程相对应函数式python编程的是命令式编程
比方说函数式python编程你要定义一个方法
命令式编程如下:
def func1():
expression()
而同样功能函数式python编程的函数式编程如下:
func1 = lambda : expression()
python是函数式编程语言吗函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是“怎么干” , 而函数函数式编程的思考方式是我要“干什么” 。至于函数式编程的特点暂不总结 , 我们直接拿例子来体会什么是函数式编程 。
lambda表达式(匿名函数):
普通函数与匿名函数的定义方式:
#普通函数
def add(a,b):
return a + b
print add(2,3)
【函数式python编程的简单介绍】#匿名函数
add = lambda a,b : a + b
print add(2,3)
#========输出===========
5
5
匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b) 。
因为lamdba在创建时不需要命名,所以,叫匿名函数^_^
Map函数:
计算字符串长度
abc = ['com','fnng','cnblogs']
for i in range(len(abc)):
print len(abc[i])
#========输出===========
3
4
7
定义abc字符串数组 , 计算abc长度然后循环输出数组中每个字符串的长度 。
来看看map()函数是如何来实现这个过程的 。
abc_len = map(len,['hao','fnng','cnblogs'])
print abc_len
#========输出===========
[3, 4, 7]
虽然 , 输出的结果中是一样的,但它们的形式不同,第一种是单纯的数值了,map()函数的输出仍然保持了数组的格式 。
大小写转换;
python提供有了,upper() 和 lower() 来转换大小写 。
#大小写转换
ss='hello WORLD!'
print ss.upper()#转换成大写
print ss.lower()#转换成小写
#========输出===========
HELLO WORLD!
hello world!
通过map()函数转换:
def to_lower(item):
return item.lower()
name = map(to_lower,['cOm','FNng','cnBLoGs'])
print name
#========输出===========
['com', 'fnng', 'cnblogs']
这个例子中我们可以看到,我们写义了一个函数toUpper,这个函数没有改变传进来的值,只是把传进来的值做个简单的操作,然后返回 。然后,我们把其用在map函数中,就可以很清楚地描述出我们想要干什么 。
再来看看普通的方式是如何实现字符串大小写转换的:
abc = ['cOm','FNng','cnBLoGs']
lowname = []
for i in range(len(abc)):
lowname.append(abc[i].lower())

推荐阅读