您的位置:首页 > 编程语言 > Python开发

python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

2016-12-04 11:54 1046 查看

1.1函数式编程

面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

函数式编程:是使用一系列函数去解决问题,函数式编程就是根据编程的范式来的出想要的结果,只要是输入时确定的,输出就是确定的。

1.2高阶函数

能把函数作为参数传入,这样的函数就称为高阶函数。

1.2.1函数即变量

以python的内置函数print()为列,调用该函数一下代码

>>> print("hello world")
hello world

#只写print
>>> print
<built-in function print>

#可见print("hello world")是函数调用,而print是函数本身

要获得函数调用执行的结果,我们把结果赋值给变量:

>>> aa = abs(-20)
>>> aa
20

如果把函数本身赋值给变量

>>> p = print
>>> p
<built-in function print>

#函数本身可以赋值给变量,变量可以指向函数

我们通过变量来调用这个print函数,验证结果如下

>>> p("check")
check

总结:函数名也是变量,对于print()这个内置函数,完全可以把函数名print看成变量,它指向一个可以打印任何东西的函数

注:实际程序代码绝不能这么写,上面只是为了举例说明,要恢复print函数,请重启python的交互环境

1.2.2传入函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一函数作为函数,这种函数就称为高阶函数,

函数的返回值是一个函数名,也是高阶函数。

例如:一个简单的高阶函数

def add(x,y,z):
return abs(x)+abs(y)
aa = add(12,23,abs)   #函数执行的结果 赋值给 aa
print(aa) #查看aa的值
#35

#注,abs()函数是求一个整数的绝对值

1.3匿名函数

什么是匿名函数:

在python中有一个匿名函数lambda,匿名函数就是指:无需定义标识符(函数名)的函数或子程序。

定义lambda表达式:

lambda  arguments:express

#arguments 参数(可以有多个参数)
#express 表达式

#lambda返回值是一个函数的地址,也就是函数对象
aa = lambda  arguments:express  #把的到lambda函数地址,赋值给变量aa

查看这个lambda函数地址   ,用aa(argument)   查看这个函数的值

 

例1

print(sorted("hello"))
#['e', 'h', 'l', 'l', 'o']
print(sorted(["hello","ho","haha"]))
# ['haha', 'hello', 'ho']
字符串排序

注:默认情况下,对字符串排序是按照ASCII编码表的大小进行比较的

 

最后总结:

python内置的几个高阶函数:map() ,reduce(),filter,sorted()

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐