python 中的函数式编程
2010-06-12 23:07
197 查看
说实话,函数式编程没有接触过的,听过很多次。所以就从python的概念开始接触吧!
if语句的一种替换:
if <cond1>:
func1()
elif <cond2>:
func2()
else:
func3()上面是原始的条件判断语句,针对不同的条件做不同的操作。用函数式来写就是:
(<cond1> and func1()) or (<cond2> and func2()) or func3()lambda 表达式的使用
lambda 的概念原来在C#中接触过,以我的理解就是匿名函数。在python的帮助中定义如下:An anonymous inline function consisting of a single expression which is evaluated when the function is called. The syntax to create a lambda function is lambda [arguments]: expression 。lambda主要用来写一些小函数。例如
def lowercase(x):
return x.lower()
可以写成
lowercase = lambda x: x.lower() def adder(x,y):
return x + y
可以写成
adder=lambda x,y:x+y常用的map(),
a="abcdefg"
map(lambda x:ord(x),a)其结果是:[97, 98, 99, 100, 101, 102, 103]
filter(lambda x:ord(x)%2==0 ,a)结果是:'bdf ‘
函数循环
标准的for item in container可以用map函数来进行。如果我们要做一连串的函数调用,先调用func1,再 func2,func3,用map来实现的过程如下:
tmpFunc=lambda x: x()
map(tmpFunc,[func1,func2,func3])这样可以实现一串函数的连续调用,但是如何来传递参数,还是有待继续研究的。
while循环可以使用if语句的函数式来进行模拟。
----------------------------------------------------------------------------------
最后, 函数式编程的优点:绝大部分程序错误 -- 和促使程序员求助于调试来解决的问题 -- 之所以会发生,是因为在程序执行过程期间,变量包含了意外的值。函数程序只不过根本就不为变量分配值,从而避免了这一特殊问题。
if语句的一种替换:
if <cond1>:
func1()
elif <cond2>:
func2()
else:
func3()上面是原始的条件判断语句,针对不同的条件做不同的操作。用函数式来写就是:
(<cond1> and func1()) or (<cond2> and func2()) or func3()lambda 表达式的使用
lambda 的概念原来在C#中接触过,以我的理解就是匿名函数。在python的帮助中定义如下:An anonymous inline function consisting of a single expression which is evaluated when the function is called. The syntax to create a lambda function is lambda [arguments]: expression 。lambda主要用来写一些小函数。例如
def lowercase(x):
return x.lower()
可以写成
lowercase = lambda x: x.lower() def adder(x,y):
return x + y
可以写成
adder=lambda x,y:x+y常用的map(),
reduce()和
filter()
map()对指定列表中每个对应的项执行传递的函数,并返回结果列表。相当于: for item in container : func(item)
a="abcdefg"
map(lambda x:ord(x),a)其结果是:[97, 98, 99, 100, 101, 102, 103]
reduce()对每个后续项执行传递的函数,返回的是最终结果的内部累加;例如
reduce(lambda n,m:n*m, range(1,10))意味着“10 的阶乘”(换句话说,用每一项乘上前一次相乘的乘积)
filter()使用传递的函数对列表中的每一项“求值”,然后返回经过甄别的,通过了传递函数测试的项的列表。 我们在map的例子基础上执行如下代码:
filter(lambda x:ord(x)%2==0 ,a)结果是:'bdf ‘
函数循环
标准的for item in container可以用map函数来进行。如果我们要做一连串的函数调用,先调用func1,再 func2,func3,用map来实现的过程如下:
tmpFunc=lambda x: x()
map(tmpFunc,[func1,func2,func3])这样可以实现一串函数的连续调用,但是如何来传递参数,还是有待继续研究的。
while循环可以使用if语句的函数式来进行模拟。
----------------------------------------------------------------------------------
最后, 函数式编程的优点:绝大部分程序错误 -- 和促使程序员求助于调试来解决的问题 -- 之所以会发生,是因为在程序执行过程期间,变量包含了意外的值。函数程序只不过根本就不为变量分配值,从而避免了这一特殊问题。
相关文章推荐
- python 函数式编程
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- 廖雪峰python学习笔记——函数式编程
- python基础-函数式编程
- Python学习(26):Python函数式编程
- Python_函数式编程简介
- Python基础学习代码之函数和函数式编程
- Python 进阶_函数式编程
- python 函数式编程和高阶函数的概念
- 可爱的 Python : Python中函数式编程,第一部分
- Python函数式编程:内置函数reduce 使用说明
- python 笔记4-- 函数式编程
- Python函数式编程:内置filter函数使用说明
- python笔记11 - lambda函数,globals()/locals()函数,eval()exec()函数,闭包函数,函数式编程,高阶函数
- python 函数式编程工具
- Python学习笔记二:函数式编程
- 【Python学习笔记】函数式编程:匿名函数lambda
- Python进阶学习笔记——函数式编程之高阶函数
- Python Decorator 和函数式编程
- python的函数式编程知识小结