Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍

参考:

函数式编程python

高阶函数编程

Note

A.函数式编程(Functional Programming)介绍编程语言

1.函数是Python内建支持的一种封装,咱们经过一层一层的函数调用把复杂任务分解成简单的任务,这种分解能够称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。这一点和C语言是一致的。函数式编程

2.计算机和计算的概念:函数

a.在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各类条件判断和跳转指令,因此,汇编语言是最贴近计算机的语言。ui

b.计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。设计

所以对应到编程语言:越低级的语言,越贴近计算机,抽象程度低,执行效率高,好比C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,好比Lisp语言。code

  • 函数式编程就是一种抽象程度很高的编程范式;
  • 纯粹的函数式编程语言编写的函数没有变量 => 任意一个函数,只要输入是肯定的,输出就是肯定的 => 咱们称之为没有反作用。
  • 而容许使用变量的程序设计语言 => 函数内部的变量状态不肯定,一样的输入,可能获得不一样的输出 => 这种函数是有反作用的。

3.函数式编程的一个特色就是,容许把函数自己做为参数传入另外一个函数,还容许返回一个函数。get

4.Python对函数式编程提供部分支持。因为Python容许使用变量,所以,Python不是纯函数式编程语言。input

B.高阶函数 Higher-order function

1.变量能够指向函数:

#!/usr/bin/env python3

a = abs(-10)

print(a)

b = abs

print(b)
sh-3.2# ./intro.py 
10
<built-in function abs>

结论:函数自己也能够赋值给变量,即:变量能够指向函数。

能够经过指向函数的变量来调用该函数:

print(b(-199))
199

说明如今变量b指向函数abs(),调用b()至关于调用abs()。

2.函数名是变量:函数名其实就是指向函数的变量。

例如,对于abs()这个方法,abs彻底就是指向该函数的变量。可是若是将abs指向其余object,就没法再次调用abs原来指向的函数。

abs = 10

print(abs)

print(abs(-10))
10
Traceback (most recent call last):
  File "./intro.py", line 17, in <module>
    print(abs(-10))
TypeError: 'int' object is not callable

注:abs函数自己来自模块builtins,若要改动整个模块的abs指向,使用如下语句:

import builtins

builtins.abs = 10

3.传入函数:既然变量能够指向函数,函数的参数能接收变量,那么一个函数就能够接收另外一个函数做为参数,这种函数就称之为高阶函数。

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

#!/usr/bin/env python3

def addtwonums(a, b) :
    return a+b

def func(a, b, f) :
    return f(a, b)

def main() :
    a = int(input())
    b = int(input())
    f = addtwonums

    print(func(a, b, f))

if __name__ == '__main__':
    main()
sh-3.2# ./intro2.py 
100
99
199

4.把函数做为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。

2017/2/10

相关文章
相关标签/搜索